私はスクリプトにいくつかの別々の実行に依存する必要があり、醜い 'if'ステートメントでそれらをすべてバンドルする必要はありません。私は終了コード '$?各実行の追加とそれを追加します。最後に、この値がしきい値を超えている場合 - 私はコマンドを実行したいと思います。bashで終了コードを追加(収集)
擬似コード:
ALLOWEDERROR=5
run_something
RESULT=$?
..other things..
run_something_else
RESULT=$RESULT + $?
if [ $RESULT -gt ALLOWEDERROR ]
then echo "Too many errors"
fi
問題:インターネットはそう主張していても、bashの結果と$を治療することを拒否?整数として。正しい構文は何ですか?
ありがとうございました。
最後のものは、エラー(または成功)に関係なく、実行された回数だけカウントされます。RESULT = $(($ RESULT + 1))。 $(())構文を使用する場合は、$?を追加する必要があります。 1の代わりに(Dave Hintonの答えのように)。それ以外の場合は、コマンドが0を返してもインクリメントされます。または、私の答えのようにトラップを使うことができます。 –
ありがとう、私はあなたの修正で編集しました。私はあなたの答えが好きです。 –
1つの行に-1の戻りコードがあり、別の行に1の戻りコードがある場合、それらは一緒になって成功(0)のように見えるため、これは機能しません。 –