Bash - 2つのコマンドを実行し、最初のコマンドが失敗した場合は終了ステータス1を取得します。

Bash - 2つのコマンドを実行し、最初のコマンドが失敗した場合は終了ステータス1を取得します。

次の場合、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

おすすめ記事