温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

linux中如何重复执行一条命令直至运行成功

发布时间:2021-10-22 15:01:00 来源:亿速云 阅读:1932 作者:小新 栏目:系统运维

这篇文章主要介绍linux中如何重复执行一条命令直至运行成功,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

解决重复性的工作,自然而然会想到循环 。在 Shell 里,循环无非 3 种:for、while、until 。在本文里,我们使用后两种循环:while  、until 。

关于这两种循环,有编程基础的小伙伴应该是比较熟悉的了,这里再复习一下。

对于 while 循环,在循环条件是 true 的情况下,它会重复执行循环体(包含在 do ... done结构体里),直到循环条件变成 false  。

而对于 untile 循环,刚好与 while 循环相反,在循环条件是 false 的情况下,它会重复执行循环体(包含在 do ... done  结构体里),直到循环条件变成 true 。

好了,复习完基础知识,我们再来看看如何用这两个循环实现我们的目的。

1. 使用 while 循环

还是以重复测试网络连通性为例。我们可以使用以下命令来解放我们的双手:

$ while ! ping -c 3 baidu.com ; do sleep 2 ; done ; echo succeed

对于这条命令,它将重复执行 ping 命令,如果不成功,则 sleep 2 秒之后继续尝试,直到成功。成功之后,将在终端打印 succeed  字样。

简单介绍:

我们将这个命令分解开,然后简要介绍各个模块的作用。

$ while ! ping -c 3 baidu.com ;

这是循环条件,我们的要求是「当 ping 命令执行失败时,执行循环体」,所以我们要在 ping 之前加一个 ! 。

$ do sleep 2 ; done ;

这部分就是循环体。当循环条件成立时,就进入到循环体。为了不让这个程序抢占太多资源,我们在循环体里睡眠 2 秒。一旦循环条件不成立时,就跳出循环体。

$ echo succeed ;

这部分是跳出循环体之后执行的语句,仅仅是打印一个 succeed 字样,当然你要做其它事也可以。

linux中如何重复执行一条命令直至运行成功

2. 使用 until 循环

我们使用 until 循环来完成同样的事情,它的写法如下:

$ until ping -c 3 baidu.com ; do sleep 2 ; done ; echo succeed

实现的效果与上面无异,所不同的是,当循环条件为真时,退出循环。

我们也来简单拆解一下。

$ until ping -c 3 baidu.com ;

这部分是循环条件,它将执行 ping 命令,执行结果作为判断依据。直到 ping 命令执行成功时,才退出循环。

$ do sleep 2 ;

循环体,睡眠 2 秒。

$ echo succeed

成功后做的事情。

linux中如何重复执行一条命令直至运行成功

3. 重复执行上个命令直到成功

这里再额外拓展一下,如何重复执行上个命令直到成功?

我们知道,想要重复运行上次的命令,可以使用这个命令:

$ !!

那如何判断上个命令执行是否成功呢?我们可以通过判断 $? 的值是否为 0 来确定。

# while 循环写法 $ !!; while [ $? -ne 0 ]; do !!; done  # until 循环写法 $ until !!; do :; done

以上是“linux中如何重复执行一条命令直至运行成功”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注亿速云行业资讯频道!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI