提问人:lulyon 提问时间:8/28/2013 最后编辑:codeforesterlulyon 更新时间:11/6/2020 访问量:307107
如何在 Bash 中打破循环?
How to break out of a loop in Bash?
问:
我想编写一个 Bash 脚本来处理文本,这可能需要一个 while 循环。
例如,C 语言中的 while 循环:
int done = 0;
while(1) {
...
if(done) break;
}
我想编写一个与此等效的 Bash 脚本。但是我通常使用的,正如我阅读的所有经典例子所表明的那样,是这样的:
while read something;
do
...
done
它没有提供关于如何执行 和 的帮助,这在 C 中定义明确并广泛使用,我不必读取 stdin 的数据。while(1){}
break;
谁能帮我使用与上述 C 代码等效的 Bash ?
答:
84赞
lurker
8/28/2013
#1
while true ; do
...
if [ something ]; then
break
fi
done
304赞
chepner
8/28/2013
#2
在.bash
workdone=0
while : ; do
...
if [ "$workdone" -ne 0 ]; then
break
fi
done
:
是 no-op 命令;它的退出状态始终为 0,因此循环一直运行,直到被赋予非零值。workdone
您可以通过多种方式设置和测试 的值以退出循环;我上面展示的那个应该可以在任何与 POSIX 兼容的 shell 中工作。workdone
评论