如何在Bash中打破循环?

如何在Bash中打破循环?,bash,shell,while-loop,Bash,Shell,While Loop,我想编写一个Bash脚本来处理文本,这可能需要一个while循环 例如,C中的while循环: int done = 0; while(1) { ... if(done) break; } 我想写一个与之相当的Bash脚本。但我通常使用的是,正如我阅读的所有经典示例所示,这是: while read something; do ... done 当(1){}和中断时,它对如何执行没有帮助,它定义良好,在C中广泛使用,并且我不必为stdin读取数据 有谁能帮我翻译一下上面C代码的Bas

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

例如,C中的while循环:

int done = 0;
while(1) {
  ...
  if(done) break;
}
我想写一个与之相当的Bash脚本。但我通常使用的是,正如我阅读的所有经典示例所示,这是:

while read something;
do
...
done
当(1){}和
中断时,它对如何执行
没有帮助,它定义良好,在C中广泛使用,并且我不必为stdin读取数据


有谁能帮我翻译一下上面C代码的Bash等价物吗?

Bash
中没有什么不同

while true ; do
    ...
    if [ something ]; then
        break
    fi
done
workdone=0
while : ; do
  ...
  if [ "$workdone" -ne 0 ]; then
      break
  fi
done
是无操作命令;其退出状态始终为0,因此循环将一直运行,直到
workdone
获得非零值


有很多方法可以设置和测试
workdone
的值,以退出循环;我上面展示的一个应该可以在任何POSIX兼容的shell中工作