我一直试图多次使用bash运行可执行文件。此可执行文件有可能陷入无限循环或段错误。我知道bash中没有try-catch,但是我们可以使用以下方法绕过该操作:
{ #try
"myCommand" && "do what i want"
} || { #except
"handle error"
}
但这不能理解无限循环。我该如何解决这个问题?
答案 0 :(得分:2)
您可以从gnu coreutils中使用timeout
。
这里有一个10秒超时的示例
timeout 10s yourscript.sh
答案 1 :(得分:0)
除非该循环发送信号或修改系统/环境,否则Bash无法告诉您myCommand
内部的情况。您可以在后台&
中运行#try,如果经过一定时间后仍在运行,请执行一些操作。 $!
指的是最后一个后台任务。
在Bash中检出Job Control。
myCommand && doWhatIWant &
sleep 10
ps $! &>/dev/null && kill $!