運行一個非常慢的腳本直到成功

運行一個非常慢的腳本直到成功

我的腳本fetch_remote_work.sh非常慢,因為它連接到網路。我需要運行它很多次直到它起作用。

./fetch_remote_work.sh

while [ $? -ne 0 ]
do
    ./fetch_remote_work.sh
done

這顯然效果很好。然而,我不喜歡有義務打電話給第一個./fetch_remote_work.sh。我知道在其他語言中,例如,有一個做一會兒至少運行第一次迭代的循環。如果它存在的話會非常乾淨

所以我的問題是:有沒有比我所做的更乾淨的方法?

答案1

使用命令本身作為while構造的條件。

while ! ./fetch_remote_work.sh; do :; done

答案2

如果你想運行一些東西直到它有一個零返回代碼,

until [ $RANDOM -eq 42 ]
do 
  echo looking for the answer to life, the universe, and everything
done

(或作為單行)

until [ $RANDOM -eq 42 ]; do echo looking for the answer to life, the universe, and everything; done

對於你的例子:

until ./fetch_remote_work.sh; do :; done

這個循環「什麼都不做」(執行:內建直到fetch_remote_work.sh 腳本回傳 0。

答案3

將第一行更改為false,強制第一次迭代達到所需條件。

相關內容