无法打破 while 循环 bash

无法打破 while 循环 bash

亲爱的社区,我遇到了在这个例子中无法打破 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而不是!=进行数字比较。

相关内容