trap コマンドで status code をとることはできないぽい。
また、status code は trap する前の status code になるらしい。
$ cat test.sh trap "echo \"exit code: $?\" " EXIT fuga $ ./test.sh ./test.sh: line 3: fuga: command not found exit code: 0 $ echo $? 127 $
また、trap で実行するコマンドでエラーが出てもその status code は無視され、スクリプトの status code は trap 前のコマンドの status code になる。
$ cat test.sh #trap "echo \"exit code: $?\" " EXIT trap "ls hoge" EXIT fuga $ ls hoge ls: hoge: そのようなファイルやディレクトリはありません $ echo $? 2 $ ./test.sh ./test.sh: line 4: fuga: command not found ls: hoge: そのようなファイルやディレクトリはありません $ echo $? 127 $