ローカル変数を持つコマンドの終了ステータス

ローカル変数を持つコマンドの終了ステータス

出力がローカル変数に配置される関数にコマンドがあります。コマンドの終了ステータスを取得したいが、$?常に0を返します。ローカル以外の変数を使用すると、予想される終了ステータスを取得します。

例は次のとおりです。

function my_fun() {
   local output=$(ls no_file_here_buddy)
   echo $?  # returns 0

   non_local_var=$(ls no_file_here_buddy)
   echo $? # returns 2
}

出力がローカル変数に格納されているコマンドの終了ステータスを取得する方法は?

答え1

を使用すると、localコマンドの終了コードの代わりに終了コードが含まれます$?local割り当てから変数宣言を分離するだけです。

local output
output=$(ls no_file_here_buddy)
echo $?

関連情報