我想编写一个Bash脚本来处理文本,这可能需要一个while循环。
例如,C:中的while循环:
int done = 0;
while(1) {
...
if(done) break;
}
我想写一个与之相当的Bash脚本。但是我经常使用的以及我读过的所有经典例子都表明了这一点:
while read something;
do
...
done
它没有提供有关如何执行while(1){}
和break;
的帮助,它在C语言中得到了很好的定义和广泛使用,而且我不必读取stdin的数据。
任何人都可以帮助我使用与上述C代码相当的Bash吗?
答案 0 :(得分:139)
bash
并没有那么不同。
done=0
while : ; do
...
if [ "$done" -ne 0 ]; then
break
fi
done
:
是no-op命令;它的退出状态始终为0,因此循环运行直到done
被赋予非零值。
有许多方法可以设置和测试done
的值以退出循环;我上面展示的那个应该适用于任何POSIX兼容的shell。
答案 1 :(得分:48)
while true ; do
...
if [ something ]; then
break
fi
done