我想编写一个 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
中没有那么不同。
workdone=0
while : ; do
...
if [ "$workdone" -ne 0 ]; then
break
fi
done
:
是无操作命令;它的退出状态始终为 0,因此循环一直运行,直到 workdone
被赋予非零值。
您可以通过多种方式设置和测试
workdone
的值以退出循环;我上面展示的应该可以在任何 POSIX 兼容的 shell 中工作。
while true ; do
...
if [ something ]; then
break
fi
done