出力がローカル変数に配置される関数にコマンドがあります。コマンドの終了ステータスを取得したいが、$?
常に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 $?