在 bash 脚本中重试命令行直到成功,然后继续脚本

Retry command line in bash script until successful then continue with script

希望有人知道这个,我可以回答我的另一个问题。 Launchagent 尝试加载我的脚本的速度太快,因此它失败了 - 我已将它的 nice 设置为 20,将其他所有设置到最后,但在创建帐户时它仍然太快了。

脚本调用 cliclick 如果系统未作为未知命令正确登录,则该脚本会失败。所以,我的想法是这样的。

在显示帮助菜单的脚本 运行 cliclick -h 的开头。如果它在命令未知时失败,请继续重复直到成功,然后继续执行脚本的其余部分。

这是确保脚本不会 运行 直到用户在桌面上的肮脏方法,我想不出更好的方法,但我也不知道如何实现它- 所以 bash 脚本专家,我如何循环 cliclick -h 直到它成功然后继续脚本的其余部分?

我怀疑有更好的方法可以做到这一点,但实际问题的实际答案很简单。

while ! cliclick -h; do
    sleep 1 # or more, or less
done

这假定 cliclick -h 正确 return 是一个零(成功)退出代码。当使用 -h 调用时,某些命令将 return 1 与执行某些实际操作的正确成功操作区分开来。然后也许尝试更 fugly

while true; do
    cliclick -h || test $? -eq 1 && break
    sleep 1 # or more, or less
done

试试这个工具:https://github.com/kadwanev/retry

retry -t 1000 -e cliclick -h

检查退出代码以查看在所有重试之后它是否完全成功...

你也可以使用until:

until cliclick -h; do sleep 2; done ; say Done