非常に遅いスクリプトを成功するまで実行する

非常に遅いスクリプトを成功するまで実行する

私のスクリプトは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、最初の反復で望ましい条件を強制します。

関連情報