我试图在循环中插入值到数组中,如下所示:
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。如果缺少了什么,您会注意到的)。