亲爱的社区,我遇到了在这个例子中无法打破 while 循环的问题。该脚本应输出文件夹中有多少个文件,并且当该计数为 0 时执行另一步骤。但是,当我执行脚本并从文件夹中删除文件后,循环无法满足条件并继续工作。 Mb,我做错了什么,因为我是 bash 脚本中的最新成员。非常感谢您的建议
var=$(ls some_folder/ | wc -l )
echo "$var"
while [ $var != 0 ];
do
sleep 2
echo "$test"
done
echo "finish!"
答案1
您已经编写了一个无限循环。假设您的情况的输出ls
超过零行,您实际上拥有:
var=1
while [ $var != 0 ]; do
sleep 2
echo "$test"
done
由于 的值var
在循环过程中从未被修改,因此它将运行循环体零次或直到脚本从外部终止。
我还应该指出,您正在使用字符串比较来执行可能应该是数字比较的操作。您应该使用-ne
而不是!=
进行数字比较。