2015-03-24 107 views
2

希望有人必须知道这一个,我可以回答我的其他问题。 Launchagent尝试加载我的脚本的速度太快,因此失败 - 我已将其设置为20,并将其他所有内容都设置为最终结果,但仍然会在创建帐户时过快。重试bash脚本中的命令行直到成功,然后继续使用脚本

的脚本调用cliclick如果系统没有正确记录在作为一个未知命令,该命令失败。所以,我的想法是这样的。

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

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

回答

0

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

retry -t 1000 -e cliclick -h 

检查退出代码,看看它是否所有重试得手后在所有...

+0

嘿nkadwa将它作为正确的工具它是一个有用的工具,我也尝试过,以及使用“直到”。不幸的是,这不是导致我的问题,我仍然坚持我的脚本,但没有意识! – realdannys 2015-03-27 11:06:50

2

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

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

这假设cliclick -h正确返回零(成功)退出代码。有些命令在调用-h时会返回1,以区分执行某些实际操作的正确成功操作。然后,也许尝试的稍微多的fugly

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

或者:'while! clicklick -h;做睡1;完成' – 2015-03-24 21:51:35

+0

@WilliamPursell当然;谢谢!更新。 – tripleee 2015-03-24 21:53:57

+0

嗯 - 我实际上最终使用了“直到”问题出现,这不保证脚本可以运行,更重要的是,它会停止cliclick-h以后的工作! – realdannys 2015-03-24 22:12:40

0

你也可以使用until

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