перехват сигналов внутри групповых команд

перехват сигналов внутри групповых команд

Недавно я столкнулся со странным поведением. Ловушка не выполняется, если находится внутри команды группировки:

$ 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.

...

sss. Исправлена ​​ошибка, из-за которой асинхронные групповые команды не запускали ни одну ловушку EXIT, определенную в теле команды.

...

tttt. Исправлена ​​проблема, из-за которой подоболочки не запускали установленную ими ловушку EXIT.

Связанный контент