これはmyscript.sh
次のとおりです。
#!/bin/bash
function mytrap {
echo "Trapped!"
}
trap mytrap EXIT
exit 3
そして、私がそれを実行すると:
> ./myscript.sh
echo $?
3
スクリプトの終了コードが、トラップがある場合とない場合の終了コードが同じなのはなぜですか? 通常、関数は最後に実行されたコマンドの終了コードを暗黙的に返します。この場合:
- エコーは 0 を返します
mytrap
私は0を返すことを期待します- は最後に実行された関数であるため
mytrap
、スクリプトは 0 を返す必要があります
そうでないのはなぜですか?私の考えはどこが間違っていますか?