bash関数の結果をキャプチャして終了することを許可する

bash関数の結果をキャプチャして終了することを許可する

この関数は呼び出しスクリプトを終了する必要があります。

crash() {
  echo error
  exit 1
}

これは期待どおりに機能します。

echo before
crash
echo after         # execution never reaches here

しかし、次はそうではありません。

echo before
x=$(crash)         # nothing is printed, and execution continues
echo after         # this is printed

関数の結果をキャプチャして終了するにはどうすればよいですか?

ベストアンサー1

これはサブシェルで$(crash)実行されるため、スクリプトではなくサブシェルに適用されるためcrashです。exit

とにかくスクリプトが終了するので、変数が使用されていない場合に変数に出力をキャプチャするのはなぜですか?

おすすめ記事