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

时间:2015-03-24 21:33:01

标签: macos bash shell scripting launchd

希望有人必须知道这个,我可以回答我的另一个问题。 Launchagent尝试加载我的脚本太快,因此它失败了 - 我已经将它的好处设置为20而其他所有内容都结束了但是,当创建帐户时它太快了。

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

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

这是一种肮脏的方法,可以确保脚本在用户处于桌面状态之前不会运行,我无法想到更好的脚本,但我也不知道如何实现它 - 所以bash脚本大师,如何循环cliclick -h直到成功然后继续其余的脚本?

3 个答案:

答案 0 :(得分:2)

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

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

这假设cliclick -h正确返回零(成功)退出代码。当使用-h调用时,某些命令将返回1,以区别于执行某些实际操作的正确成功操作。然后可能尝试更加难看的

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

答案 1 :(得分:1)

您还可以使用until

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

答案 2 :(得分:0)

试用此工具:https://github.com/kadwanev/retry

retry -t 1000 -e cliclick -h

检查退出代码以查看重试后是否成功...