グループ化コマンド内でのシグナルのトラップ

グループ化コマンド内でのシグナルのトラップ

最近、奇妙な動作に遭遇しました。グループ化コマンド内ではトラップが実行されません。

$ 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

それは想定通りでしょうか?

答え1

これはバグ>4.2.37これはバージョンとバージョンの間で修正されました<=4.3.8。ここには、変更履歴:

このドキュメントでは、このバージョン bash-4.3-alpha と以前のバージョン bash-4.2-release の間の変更点について詳しく説明します。

...

非同期グループ コマンドがコマンド本体で定義された EXIT トラップを実行しないというバグを修正しました。

...

tttt。サブシェルが設定した EXIT トラップを実行しない問題を修正しました。

関連情報