如何在Bash中跳出循环?

229

我希望编写一个Bash脚本来处理文本,可能需要使用while循环。

例如,在C语言中使用while循环:

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

我希望编写一个Bash脚本,与之相等。但是我通常使用的和我阅读的所有经典示例都显示出来的是这个:

while read something;
do
...
done

它并未提供任何关于如何使用C语言中广泛使用的while(1){}break;以及无需从标准输入(stdin)读取数据的帮助。

有谁可以帮助我找到上述C代码的Bash等效版本吗?

2个回答

304

bash 中其实也没什么不同。

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

:是无操作命令,其退出状态始终为0,因此循环运行直到workdone获得非零值。


有许多方法可以设置和测试workdone的值以退出循环;我上面展示的方法应该适用于任何符合POSIX标准的shell。


84
while true ; do
    ...
    if [ something ]; then
        break
    fi
done

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接