私は最近奇妙な行動に出くわしました。グループ化コマンド内の場合、トラップは実行されません。
$ cat ./1.sh #!/usr/bin/env bash set -eu trap 'echo exit' EXIT $ ./1.sh exit $ cat ./2.sh #!/usr/bin/env bash set -eu echo test | { trap 'echo exit' EXIT; } $ ./2.sh
本来あるべき姿ですか?
これは バグ であり、バージョン間のどこかで修正されています>4.2.37および<=4.3.8。これはおそらく 変更ログ からの関連情報です:
>4.2.37
<=4.3.8
このドキュメントでは、このバージョンのbash-4.3-alphaと以前のバージョンのbash-4.2-releaseの間の変更点について詳しく説明します。.。sss。非同期グループコマンドがコマンドの本体で定義されたEXITトラップを実行しない原因となっていたバグを修正しました。.。tttt。サブシェルが設定したEXITトラップを実行しない問題を修正しました。
このドキュメントでは、このバージョンのbash-4.3-alphaと以前のバージョンのbash-4.2-releaseの間の変更点について詳しく説明します。
.。
sss。非同期グループコマンドがコマンドの本体で定義されたEXITトラップを実行しない原因となっていたバグを修正しました。
tttt。サブシェルが設定したEXITトラップを実行しない問題を修正しました。