【问题标题】:How to break out of a loop in Bash?如何打破 Bash 中的循环?
【发布时间】:2013-08-31 13:42:08
【问题描述】:

我想编写一个 Bash 脚本来处理文本,这可能需要一个 while 循环。

例如,C 中的 while 循环:

int done = 0;
while(1) {
  ...
  if(done) break;
}

我想写一个与之等效的 Bash 脚本。但是我通常使用的以及我阅读的所有经典示例都表明,是这样的:

while read something;
do
...
done

它对如何处理 while(1){}break; 没有任何帮助,它们在 C 中定义明确并广泛使用,我不必为标准输入读取数据。

任何人都可以帮助我使用上述 C 代码的 Bash 等效项吗?

【问题讨论】:

    标签: bash shell while-loop


    【解决方案1】:

    bash 中并没有什么不同。

    workdone=0
    while : ; do
      ...
      if [ "$workdone" -ne 0 ]; then
          break
      fi
    done
    

    : 是无操作命令;它的退出状态始终为 0,因此循环一直运行,直到 workdone 被赋予非零值。


    您可以通过多种方式设置和测试workdone 的值以退出循环;我在上面展示的那个应该可以在任何 POSIX 兼容的 shell 中工作。

    【讨论】:

      【解决方案2】:
      while true ; do
          ...
          if [ something ]; then
              break
          fi
      done
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-02-14
        • 2020-06-15
        • 2022-10-14
        • 1970-01-01
        • 2016-08-06
        相关资源
        最近更新 更多