一个 shell 自定义命令实现自动重试,解决 github 代码库拉取失败的问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
爱意满满的作品展示区。
cmdyu

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

  •  
  •   cmdyu Nov 18, 2023 1127 views
    This topic created in 893 days ago, the information mentioned may be changed or developed.

    在国内拉取 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  
       Nov 18, 2023
    不治本
    甚至可能都不治标

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

    github 加速 raw 加速

    自定义 可加入自己的代理节
    cmdyu
        3
    cmdyu  
    OP
       Nov 19, 2023
    这算是一个在不使用代理的情况下的简易解决方案
    适用于连接不稳定的情况
    有代理的话就不用重试了
    About     Help     Advertise     Blog     API     FAQ     Solana     1310 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 33ms UTC 23:46 PVG 07:46 LAX 16:46 JFK 19:46
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86