zoukankan      html  css  js  c++  java
  • 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}

  • 相关阅读:
    c++字符串
    iOS调用相册
    cocos2d-x中有一个JniHelper类详细使用
    iOS 字符串应用
    c++调用java
    iOS调用相册、相机、上传等问题
    win32中GBK、UTF8的互转
    SQL Server海量数据查询代码优化建议
    JSON中的[]和{}
    数据库范式
  • 原文地址:https://www.cnblogs.com/gary-guo/p/6097122.html
Copyright © 2011-2022 走看看