Sop*_*rez 5 linux loops timeout
这工作正常(无限循环):
$ while TRUE; do printf ".";done
Run Code Online (Sandbox Code Playgroud)
.................................................. ...........................
我想超时这while loop与timeout命令.所有这些都不起作用:
$ timeout 5 while TRUE; do printf ".";done
$ timeout 5 "while TRUE; do printf ".";done"
$ timeout 5 "while TRUE; do printf \".\";done"
$ timeout 5 $(while TRUE; do printf ".";done)
$ timeout 5 $('while TRUE; do printf ".";done')
Run Code Online (Sandbox Code Playgroud)
什么是正确的方法(如果存在)?
lua*_*kow 13
我认为你的问题的解决方案是执行另一个shell实例并将适当的命令传递给它.根据bash手册:
-c If the -c option is present, then commands are read from the first non-option argument command_string.
Run Code Online (Sandbox Code Playgroud)
因此,我的解决方案将是这样的:
timeout 5 bash -c -- 'while true; do printf ".";done'
Run Code Online (Sandbox Code Playgroud)
--确保以下参数将被视为非选项.并且''有助于传递"而不会有不必要的逃避
至少 bash 的替代方案是这样的:
start=$EPOCHSECONDS
while <condition>
do
sleep .2 # (or whatever loop body you have
if (( EPOCHSECONDS-start > 5 )); then break; fi
done
Run Code Online (Sandbox Code Playgroud)
它不像那样简洁timeout,但它是一个全内置的,有它自己的优点。
| 归档时间: |
|
| 查看次数: |
9562 次 |
| 最近记录: |