次の場合、report
コマンドは常に実行する必要がありますが、コマンドが失敗した場合は終了ステータス1を取得する必要がありますtest
。
test;report
echo $?
0
シェルスクリプトを作成せずに単一のbash行でこれを行うにはどうすればよいですか?
ベストアンサー1
保存して再利用してください$?
。
test; ret=$?; report; exit $ret
テストコマンドが複数あり、すべて実行したいが、そのうちの1つが失敗したかどうかを追跡するには、bashのERRトラップを使用できます。
failures=0
trap 'failures=$((failures+1))' ERR
test1
test2
if ((failures == 0)); then
echo "Success"
else
echo "$failures failures"
exit 1
fi