首页 > 代码库 > 1.15运行命令直至执行成功
1.15运行命令直至执行成功
在日常工作中使用shell时,有时候命令只有满足某些条件或是某种外部事件,操作才能够成功执行,这种情况下,你可能系统重复执行命令,直至成功为止。
1、按照以下方式定义函数:
repeat()
{
while true
do
$@ && return
done
}
或者把它放入shell的rc文件,更便于使用:
repeat()
{
while ture;
do
$@ && return ;done
}
2、工作原理
创建了一个函数repeat,它包含了一个无限while循环,该循环执行以参数形式(通过$@访问)传入函数的命令。如果命令执行成功,则返回,进而退出循环。
3、补充内容
a、一种更快的做法
大多数现代系统中,true是作为/bin中的一个二进制文件来是实现的,这就意味着每执行一次while循环,shell就不得不生成一个进程。如果不想这样,可以使用shell内建的“:”命令,它总是会返回为0的退出码:
repeat(){while:;do $@ &&return;done}
b、增加延时
假设要用repeat()从internet上下载一个暂时不可用的文件,不过这个文件只需要等一会儿就能下载,方法如下
repeat wget c http://www.example.com/software-0.1.tar.gz
如果使用这种方式,会不断的向服务器发送命令,服务器可能会把自己拉黑,故修改repeat
repeat(){while :;do $@ && return;sleep 30;done}
1.15运行命令直至执行成功
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。