gpt4 book ai didi

bash - 奇怪的(无限)while 循环,代码在 "do"之前

转载 作者:行者123 更新时间:2023-11-29 09:38:59 25 4
gpt4 key购买 nike

我在中学任教。学校和我类的一个学生带来了这段代码,问我为什么循环永远不会结束。

1 counter=1  
2 while (( counter < 3 ))
3 echo $LINENO: $counter
4 do
5 ((counter++))
6 done
7 echo $LINENO: The end

这导致无限循环,我真的不知道为什么:-(

通过bashdb运行这段代码可以看出第2行的测试不影响流程:第3行和第5行被执行,然后流程回到第2行再次测试,执行第4行和第5行,然后循环永远不会跳过第 6 行中的“完成”。

脚本不断打印计数器值并递增它。

如果我调换第 3 行和第 4 行,循环将照常运行并在 2 次迭代后停止。

我已经在 OSX 和 Linux 上的 Bash v.4 中测试了这段代码。

对这种循环行为有什么想法吗?谢谢大家。 :-)

最佳答案

while 循环中使用的条件是 whiledo 之间的所有内容。在这种情况下,条件包括每次都返回 0 的第 3 行(echo)。比较的结果将被忽略,并使用 echo 的退出状态,如 help while 中所述:

while: while COMMANDS; do COMMANDS; done

Execute commands as long as a test succeeds.

Expand and execute COMMANDS as long as the final command in the while COMMANDS has an exit status of zero.

关于bash - 奇怪的(无限)while 循环,代码在 "do"之前,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54215326/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com