在bash中向while循环添加超时命令时出错

时间:2014-10-30 23:01:59

标签: bash timeout command

所以我的while循环工作正常,但是当我添加timeout命令时它会给我这个错误:

bash: syntax error near unexpected token `do'

这是命令:

timeout 30s while [ $? = 0 ]; do kill -0 $MYPID 2>/dev/null; if [ $? = 0 ]; then echo The Process PID is running && date +%r; else echo the Process PID is NOT running && date +%r; fi; done

1 个答案:

答案 0 :(得分:2)

Bash看到了这一点:您想要使用参数timeout30swhile[$?执行命令=0]。然后(因为;)你要执行do ...

当bash解析您的行时,它会抱怨do关键字不在此处的法律构造中......它是意外的!

要快速修复,请将命令包装起来:

timeout 30s bash -c 'while ....'