実行結果 "Unknown Error 1" あれ?? ちょww 一瞬目が点になりました。 FatalErrorをキャッチしたと思ったら、キャッチできていません。 どういうこと? こういうことです。 #!/bin/sh func () { # Fatal Error return 3 } func if [ $? -eq 3 ] ;then echo "Unknown Error $?" fi 実行結果 Unknown Error 0 そう、if の条件式が、「コマンド」であることを忘れていました。 []コマンドは「コマンド」なので、これを実行した結果のステータスコード が $?に再代入されてしまっているのです。 正しい書き方 $?をすぐに一時変数に代入してやれば、期待通りの結果が得られます。 #!/bin/sh func () { # Fatal Error return 3 } fun