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
$