误解while while

时间:2016-09-23 17:56:33

标签: unix while-loop

无法让它退出循环,也许我不太了解while循环以使其停止。这就是我在命令行中输入的内容。我希望它能在10点停止。

 c=1; while : [[$c -le 10]]; do df -Th; echo "$c";  date; c=`expr $((c+=1))`; sleep 6; done

我已经阅读了文章,但它似乎没有帮助:bash while loop won't stop itself

最终代码:

c=1; while [[ $c -le 10 ]]; do df -Th; echo "$c";  date; c=$((c+=1)); sleep 6; done

最终代码需要删除:并在[[$c之间添加10]]

1 个答案:

答案 0 :(得分:3)

在bash中,空格很重要。替换:

: [[$c -le 10]]

使用

[[ $c -le 10 ]]

出了什么问题

当bash遇到

: [[$c -le 10]]

它使用三个参数:[[$c-le执行命令10]]。这不是你想要的。首先,:是no-op命令:无论其参数如何,它都不执行任何操作。其次,如果你想运行[[测试命令,它需要,如上所示,它周围的空格。

替代

有几种方法可以在bash中循环10次。一个人:

$ for c in {1..10}; do echo "$c"; done
1
2
3
4
5
6
7
8
9
10

另一个:

$ for ((c=1;c<=10;c++)); do echo "$c"; done
1
2
3
4
5
6
7
8
9
10