戻りコードをキャプチャしたいとしましょう。
(exit 56)
set -e
orハンドラを使用すると、zerr
これを行うことはできません。
(exit 56)
ret=$?
(exit 56) || true
回避を使用すると、set -e
戻りコードがゼロになり、これ以上取得できなくなります。
もしそうなら、戻りコードを取得する方法は?
答え1
あなたはそれを使用することができます&& true
:
set -o errexit
(exit 50) && true
echo code: $?
次のようにすることもできます。
set -o errexit
if (exit 50) then else
echo failed with code $?
fi
または:
set -o errexit
(exit 50) || {
code=$?
echo failed with code $code
# and whatever else you want to do with $code
}
アイデアは、errexit
失敗したコマンドが次のように使用されるたびに状況しかし、これを行うと、(exit 50) && true
後の終了コードは常にゼロになります。
(個人的には、errexit
適切なエラー処理を手動で実行するのを避け、好みます。)