当前位置: 首页 > Linux

如何重复执行一条命令,直到成功运行?

时间:2023-04-07 02:09:05 Linux

大家好,我是良旭。在我们的日常工作中,根本没有太多需要重复做的工作。比如我们要确认网络是否连通,传统的方法是使用ping命令不断测试某个地址(比如百度)。网络好是可以的,但是如果网络不好,那就需要一直运行ping命令了。作为程序员,怎么能容忍重复的工作呢?只要是重复性的工作,都可以用编程来解决!下面良旭将介绍两种重复执行一条命令直到成功运行的方法。(PS:本文适合初学者,高手可以绕过)解决重复性任务,自然会想到循环。在Shell中,循环不超过三种:for、while和until。在本文中,我们使用后两个循环:while和until。关于这两个循环,有编程基础的朋友应该不陌生,这里就来复习一下。对于while循环,如果循环条件为真,它将重复执行循环体(包含在do...done结构中),直到循环条件变为假。至于until循环,它正好与while循环相反。如果循环条件为假,它将重复执行循环体(包含在do...done结构中),直到循环条件为真。好了,在回顾了基础知识之后,让我们看看如何使用这两个循环来实现我们的目标。1、使用while循环仍然是反复测试网络连通性的例子。我们可以使用以下命令来解放双手:$while!ping-c3百度网盘;睡觉2;完毕;echosucceed对于这个命令,它会重复ping命令,如果不成功,则休眠2秒,然后不断尝试,直到成功。成功后,终端会打印succeed字样。简介:我们将对这条命令进行分解,然后简要介绍各个模块的作用。$同时!ping-c3百度网盘;这是一个循环条件,我们的要求是“ping命令失败时执行循环体”,所以需要加一个!平之前。$睡觉2;完毕;这部分是循环体。当循环条件为真时,进入循环体。为了不让这个程序抢太多资源,我们在循环体中休眠了2秒。一旦循环条件不成立,跳出循环体。$回声成功;这部分是跳出循环体后执行的语句,打印一个字succeed就可以了,当然还可以做其他事情。2.使用until循环我们使用until循环来完成同样的事情,它的写法如下:$untilping-c3baidu.com;睡觉2;完毕;echosucceed实现的效果和上面一样,不同的是,当循环条件为真时退出循环。让我们也简单地分解一下。$直到ping-c3baidu.com;这部分是循环条件,会执行ping命令,执行结果作为判断依据。直到ping命令执行成功才退出循环。$睡觉2;循环身体,休眠2秒。$echo成功后做什么。3.重复最后一条命令,直到成功。这是一个额外的扩展。如何重复上一条命令直到成功?我们知道,如果要重复上一条命令,可以使用这个命令:$!!那么如何判断上一条命令是否执行成功呢?我们可以通过判断$?是0.#while循环写入$!!;而[$?-ne0];做!!;done#until循环写入$until!!;做:;您的“三通”是良旭继续创作的最大动力!关注原创公众号《良序Linux》,第一时间获取最新Linux干货!公众号后台回复【信息】【面试】【简历】获取精选一线大厂的面试、自我提升、简历等信息。关注我的博客:lxlinux.net