我想每 N 秒运行一个 bash 脚本,即使它失败,我也希望while
循环继续而不崩溃。
我正在使用以下解决方案如何每 N 秒重复运行 bash 脚本?:
同时脚本;睡 10 个小时;完毕
有评论说:This is the canonical way to repeat a command as long as it doesn't fail.
. 如果我的脚本失败,我会观察到 while 循环被终止。
有没有办法try...catch
在脚本上应用机制并继续循环,while
即使脚本失败?
您可以尝试交换循环中的条件和操作
while
,并script
在后台运行:这使得循环机制不关心
script
成功还是失败。这也比您的示例更容易终止。只需识别并终止该
sleep
进程即可。这将导致sleep
返回一个错误代码,进而终止循环while
。它还可以使您的脚本运行更接近您请求的确切时间间隔。
script
您最初的示例将每秒运行一次N+X
,其中N
10,以及运行所需的X
时间。script
这个例子应该更接近每一N
秒。您应该预料到并准备好应对
script
需要超过N
几秒才能完成的情况,因此您可能有多个实例同时运行。在 POSIX shell 中编写无限
while
循环的常见方法是使用true
命令作为条件: