在Linux shell脚本中计时一段时间

时间:2014-12-18 21:08:37

标签: linux loops timeout

这很好用(无限循环):

$ while TRUE; do printf ".";done

............................................... ..............................

我正在尝试使用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')

正确的方法是什么(如果存在)?

1 个答案:

答案 0 :(得分:12)

我认为您的问题的解决方案是执行另一个shell实例并将适当的命令传递给它。 根据bash手册:

-c        If the -c option is present, then commands are read from the first non-option argument command_string.

因此我的解决方案就是这样:

timeout 5 bash -c -- 'while true; do printf ".";done'

--确保以下参数将被视为非选项。并且''有助于传递"而无需不必要的转义