为什么在这个 while 循环实例中“继续”不起作用?

inq*_*ind -2 shell-script

我正在尝试学习 Unix 并练习循环。有人可以解释为什么在遇到continue语句后输出被暂停吗?

之后输出暂停Count : 4,我用Ctrl+退出C

代码:

COUNT=0

while [ $COUNT -lt 10 ]
do
  if [ $COUNT = 5 ]
  then
     continue
  fi
  echo "Count : $COUNT"
  ((COUNT++))
done

echo "while loop finished"
exit 0
Run Code Online (Sandbox Code Playgroud)

Adm*_*Bee 7

原因很简单:您的continue语句指示 shell 立即跳过执行到下一个循环迭代。

不幸的是,您因此跳过了该((COUNT++))部分,这意味着一旦COUNT达到 5,它将永远不会再次递增,并且while永远不会满足条件,因此从那时起您将陷入无限循环。

如果,正如@steeldriver 假设的那样,您想在 a COUNTof处跳出循环5,则该break语句将是正确的选择。

一般而言,如果您有兴趣了解有关 shell 脚本的更多信息,我会推荐GreyCat&Lhunath 的 Bash 指南。此外,运行您的脚本shellcheck(也可作为许多操作系统存储库上的独立程序)可以帮助识别语法错误等。