V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
cmdyu
V2EX  ›  分享创造

一个 shell 自定义命令实现自动重试,解决 github 代码库拉取失败的问题

  •  
  •   cmdyu · 168 天前 · 614 次点击
    这是一个创建于 168 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在国内拉取 github 上的代码,有时能连上,有时连不上,这就导致拉取源码经常失败。可以手动多试几次,但是这样挺麻烦,不是我等喜欢用代码自动化一切的程序员的风格。于是就写了一个 shell 自定义函数来解决这个问题。代码如下:

    loop-do () 
    { 
        $*;
        while [[ $? != 0 ]]; do
            $*;
        done
    }
    

    原理就是把要执行的命令放到一个 while 循环里执行,用命令的执行结果作为 while 循环的终止条件,当检测到命令执行成功时就终止循环,否则继续尝试。

    其中的 $* 变量代表 loop-do 函数的所有参数,也就是我们要执行的命令。条件判断中的 $? 变量代表最近执行的命令的执行结果,如果是 0 ,表示执行成功,否则,就表明命令执行失败。

    把这个函数定义放到 .bashrc 或 .zshrc 文件中,然后执行

    . .bashrc
    

    . .zshrc
    

    让命令生效

    这样就可以在终端中使用了。使用示例:

    $ loop-do git pull
    

    这个命令不仅能执行 git pull ,其他任何需要多次重试到命令都可以。这样就不用再傻傻的一遍一遍的手动执行了。

    shell 自定义函数非常有用,能实现很多自动化操作,希望这个例子能对大家有所帮助。

    欢迎关注微信公众号:文本魔术,了解更多。

    julyclyde
        1
    julyclyde  
       168 天前
    不治本
    甚至可能都不治标

    你咋不写一个“先尝试直连,不行的话再套个代理试试”
    都比直接循环重试靠谱多了
    fatelight
        2
    fatelight  
       167 天前
    不如直接 先 ping 一次 github
    如果 ping 不通 使用 公共代理地址拉取,先检查网络访问情况

    github 加速 raw 加速

    自定义 可加入自己的代理节
    cmdyu
        3
    cmdyu  
    OP
       167 天前
    这算是一个在不使用代理的情况下的简易解决方案
    适用于连接不稳定的情况
    有代理的话就不用重试了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2395 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 11:39 · PVG 19:39 · LAX 04:39 · JFK 07:39
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.