シェルスクリプト(bash)でフラグを設定して、ゼロ以外の値が返された場合にフラグが設定されるようにします(つまり、errors="True"
のような変数を設定します)。
これまで、スクリプトをscriptname.sh 2>Error.log
で呼び出してから、次のようなことを行うことを考えてきました。
if $(wc -l error.log) != 0; then
errors="True"
もっと良い方法がなければなりません。教えてください。
これがまさにtrap ERR
の目的です。残念ながら、set -e
と同じ制限と欠点があります。 set -e
と同様に、条件式でゼロ以外を返すコマンドは、トラップをトリガーします。次にいくつかのサンプルコードを示します。
error=0
set_error() {
(( error++ ))
}
trap set_error ERR
ls askdjasdaj 2>/dev/null
false
false || true # false returns non-zero but is not counted due to the conditional
echo "$error" # outputs "2"