그룹화된 명령에서 신호 잡기

그룹화된 명령에서 신호 잡기

최근에 이상한 행동을 겪었습니다. 그룹화된 명령 내에 있으면 트랩이 실행되지 않습니다.

$ 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 트랩을 실행하지 못하게 하는 버그를 수정했습니다.

...

으으으. 하위 쉘이 자신이 설정한 EXIT 트랩을 실행하지 못하게 하는 문제를 수정했습니다.

관련 정보