如何在 Bash 中跳出循环?

问题描述 投票:0回答:2

我想编写一个 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
2个回答
306
投票

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
© www.soinside.com 2019 - 2024. All rights reserved.