在 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
希望有人知道这个,我可以回答我的另一个问题。 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