我无法想出正确的分号和/或括号组合 . 我想这样做,但作为命令行的一行代码:
while [ 1 ] do foo sleep 2 done
一个非常简单的无限循环.. :)
while true ; do continue ; done
你的问题可能是:
while true; do foo ; sleep 2 ; done
你也可以试试这个警告:你不应该这样做,因为问题是要求无限循环而没有结束......这就是你可以做到的 .
while [[ 0 -ne 1 ]]; do echo "it's looping"; sleep 2; done
while true; do foo; sleep 2; done
顺便说一句,如果你在命令提示符下键入多行(如你所示),然后用向上箭头调用历史记录,你将在一行上得到它,正确地标点符号 .
$ while true > do > echo "hello" > sleep 2 > done hello hello hello ^C $ <arrow up> while true; do echo "hello"; sleep 2; done
科隆总是“真实的”:
while :; do foo; sleep 2; done
我喜欢仅将分号用于WHILE语句,而使用&&运算符来使循环执行多个操作...
所以我总是这样做
while true ; do echo Launching Spaceship into orbit && sleep 5s && /usr/bin/launch-mechanism && echo Launching in T-5 && sleep 1s && echo T-4 && sleep 1s && echo T-3 && sleep 1s && echo T-2 && sleep 1s && echo T-1 && sleep 1s && echo liftoff ; done
如果你希望while循环在某些条件之后停止,并且你的 foo 命令在满足这个条件时返回非零,那么你可以让循环中断如下:
foo
while foo; do echo 'sleeping...'; sleep 5; done;
例如,如果 foo 命令正在批量删除事物,并且在没有任何内容要删除时返回1 .
如果您有一个自定义脚本需要多次运行命令直到某些条件,这很有效 . 您编写脚本以在满足条件时使用 1 退出,并在应该再次运行时使用 0 退出 .
1
0
例如,假设您有一个python脚本 batch_update.py ,它在数据库中更新100行,如果有更新要更新则返回 0 ,如果没有更新则返回 1 . 以下命令允许您一次更新行100,在更新之间休眠5秒:
batch_update.py
while batch_update.py; do echo 'sleeping...'; sleep 5; done;
如果我能给出两个实际例子(带有一点“情感”) .
这会将所有以“.jpg”结尾的文件的名称写在“img”文件夹中:
for f in *; do if [ "${f#*.}" == 'jpg' ]; then echo $f; fi; done
这会删除它们:
for f in *; do if [ "${f#*.}" == 'jpg' ]; then rm -r $f; fi; done
只是想做出贡献 .
也可以在while条件下使用sleep命令 . 使单线看起来更干净imho .
while sleep 2; do echo thinking; done
对于简单的过程观看,请使用 watch
watch
您可以使用分号分隔语句:
$ while [ 1 ]; do foo; sleep 2; done
您还可以使用 until 命令:
until
until ((0)); do foo; sleep 2; done
请注意,与 while 相反,只要测试条件的退出状态不为零, until 就会执行循环内的命令 .
while
使用 while 循环:
while read i; do foo; sleep 2; done < /dev/urandom
使用 for 循环:
for
for ((;;)); do foo; sleep 2; done
使用 until 的另一种方法:
until [ ]; do foo; sleep 2; done
11 回答
一个非常简单的无限循环.. :)
你的问题可能是:
你也可以试试这个警告:你不应该这样做,因为问题是要求无限循环而没有结束......这就是你可以做到的 .
顺便说一句,如果你在命令提示符下键入多行(如你所示),然后用向上箭头调用历史记录,你将在一行上得到它,正确地标点符号 .
科隆总是“真实的”:
我喜欢仅将分号用于WHILE语句,而使用&&运算符来使循环执行多个操作...
所以我总是这样做
如果你希望while循环在某些条件之后停止,并且你的
foo
命令在满足这个条件时返回非零,那么你可以让循环中断如下:例如,如果
foo
命令正在批量删除事物,并且在没有任何内容要删除时返回1 .如果您有一个自定义脚本需要多次运行命令直到某些条件,这很有效 . 您编写脚本以在满足条件时使用
1
退出,并在应该再次运行时使用0
退出 .例如,假设您有一个python脚本
batch_update.py
,它在数据库中更新100行,如果有更新要更新则返回0
,如果没有更新则返回1
. 以下命令允许您一次更新行100,在更新之间休眠5秒:如果我能给出两个实际例子(带有一点“情感”) .
这会将所有以“.jpg”结尾的文件的名称写在“img”文件夹中:
这会删除它们:
只是想做出贡献 .
也可以在while条件下使用sleep命令 . 使单线看起来更干净imho .
对于简单的过程观看,请使用
watch
您可以使用分号分隔语句:
您还可以使用
until
命令:请注意,与
while
相反,只要测试条件的退出状态不为零,until
就会执行循环内的命令 .使用
while
循环:使用
for
循环:使用
until
的另一种方法: