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}

 

posted on   gary_123  阅读(384)  评论(0编辑  收藏  举报

编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示