読者です 読者をやめる 読者になる 読者になる

コマンド出力をローカル変数に代入する際のエラーコードチェック

皆さん、bashでよく

result=`command`
ret=$?

みたいにしてエラーハンドリングされてると思いますが、もしこれが関数内で

local result=`command`
ret=$?

みたいにしたらどうなると思います?
実は、$? は必ず0になってしまうのですよ!!
local がコマンドだからぽい。local が正常終了し、その戻り値が$?にセットされてしまってる。
対策としては

local result
result=`command`
ret=$?

とか。