在Shell里怎么重复执行一条命令直到运行成功-创新互联
这篇文章主要讲解了“在Shell里怎么重复执行一条命令直到运行成功”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“在Shell里怎么重复执行一条命令直到运行成功”吧!
站在用户的角度思考问题,与客户深入沟通,找到汉中网站设计与汉中网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都网站设计、成都网站建设、企业官网、英文网站、手机端网站、网站推广、申请域名、雅安服务器托管、企业邮箱。业务覆盖汉中地区。解决重复性的工作,自然而然会想到循环 。在 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 字样,当然你要做其它事也可以。
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
成功后做的事情。
3. 重复执行上个命令直到成功
这里再额外拓展一下,如何重复执行上个命令直到成功?
我们知道,想要重复运行上次的命令,可以使用这个命令:
$ !!
那如何判断上个命令执行是否成功呢?我们可以通过判断 $? 的值是否为 0 来确定。
#
while 循环写法
$ !!;
while [ $? -ne
0 ];
do !!; done
#
until 循环写法
$
until !!;
do :; done
感谢各位的阅读,以上就是“在Shell里怎么重复执行一条命令直到运行成功”的内容了,经过本文的学习后,相信大家对在Shell里怎么重复执行一条命令直到运行成功这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是创新互联,小编将为大家推送更多相关知识点的文章,欢迎关注!
文章标题:在Shell里怎么重复执行一条命令直到运行成功-创新互联
网页网址:http://scyanting.com/article/ghsip.html