「ローカル」に終了コードをキャプチャさせるにはどうすればよいですか?

「ローカル」に終了コードをキャプチャさせるにはどうすればよいですか?

私のプロジェクトには次のスニペットがあります。

local output="$(bash "${1##*/}")"
echo "$?"

ただし、これは常に0を印刷するため、local削除すると変数が正しく機能localします。これはサブシェルの終了コードを想定しています。$?

私の質問は:終了値をキャプチャしながら、この変数をローカル変数としてどのように保持できますか?

ベストアンサー1

代入する前にローカル変数を宣言してください。

thing() {
  local output
  output="$(bash "${1##*/}")"
  echo "$?"
}

私の考えでは、追加の変数を設定するよりもこれがRET読みやすくなります。これはYMMVですが、期待どおりに動作します。

おすすめ記事