状態があいまいになるまでコマンドの実行を繰り返し、データを保持します。

状態があいまいになるまでコマンドの実行を繰り返し、データを保持します。

私が遭遇したのは、デーモンが再起動された後に最初の数回のコマンドを実行しようとしたときに2を返し(後ろにstderrメッセージが表示され)、すべてが正常に機能したことです。

このエラーを解決するには、while/do/done/untilsomeの機能を活用する必要があると思いましたが、興味深いのは、sleep通常の実行で得られたすべてのデータを持たなければならないということです。

...
RESULT=$(command param1 param2 2>&1)
SIG=$?
...

command param1 param2では、終了状態が2(与えられた値)ではなく、変数にSTDOUT + STDERRがあり、導入されたように変数にRESULT終了状態があるまで繰り返す方法はありますかSIG

ベストアンサー1

outfile=$(mktemp)

while ! command param1 param2 >"$outfile" 2>&1; do
    [ "$?" -ne 2 ] && break
    sleep 10
done

result=$(<"$outfile")
rm "$outfile"

2これは、成功するまで、または少なくとも終了状態でaを返さないまで、コマンドを繰り返し繰り返し実行します(毎回10秒の遅延を置きます)。

コマンドの出力は一時ファイルに書き込まれ、ループ後にファイルを変数として読み取って削除します。bashここに書いたように変数ビットを読み取るには必要です。

おすすめ記事