在循环中插入到shell数组中



我试图在循环中插入值到数组中,如下所示:

branches_to_delete=()
cat branches.txt | while read branch_name
do
BRANCH_COUNT=$(git ls-remote | grep -w $branch_name | wc -l)
if [ $BRANCH_COUNT -eq 0 ]; then
echo "Branch does not exist"
branches_to_delete+=($branch_name)
elif [ $BRANCH_COUNT -eq 1 ]; then
echo "Branch exists"
else 
echo "Not valid result"
fi
done
echo "Loop finished"
echo ${branches_to_delete[@]}

但是当我打印出branches_to_delete时,它实际上是空的。我哪里做错了?

使用从cat branches.txt到读循环的管道,您创建了一个不能访问父shell的branches_to_delete数组的子shell。

您可以通过避免管道和节省cat:

的无用使用来解决这个问题。
branches_to_delete=()
while read branch_name; do
...
done < branches.txt

(确保...中没有读取read的stdin。如果缺少了什么,您会注意到的)。

相关内容

  • 没有找到相关文章

最新更新