代码之家  ›  专栏  ›  技术社区  ›  Chris

用于wget的带有重试的单行bash脚本

  •  0
  • Chris  · 技术社区  · 3 年前

    我当前运行两个命令:

    所以它等待3分钟,然后调用api

    我想改变这一点,让它每分钟持续检查一次,长达十分钟,直到wget返回200。

    因此,它应该相当于这个php函数,但在bash中。成为一个换行符是很重要的(可以是由;分隔的多个语句)

    foreach(range(1,10) as $i) {
         sleep(60);    
         try {  
             Http::get('https://somedomain.com/api/up');
             break;
         } catch(Exception $e) {
             if($i>=10) throw $e;
         }
    }
    

    我的bash知识让我失望的两件事是:

    • 如何进行try-catch或检查200响应代码。
    • 如何将所有内容整合到一行/一句话中
    1 回复  |  直到 3 年前
        1
  •  1
  •   Barmar    3 年前

    使用 for 循环,所有语句由 ;

    for i in {1..10}; do sleep 60; wget 'https://somedomain.com/api/up' && break; done
    
        2
  •  0
  •   Jeff Schaller Zayan    3 年前
    for i in {1..5}; do wget -- "$1" && break || sleep 15; done
    
    推荐文章