sinais de interceptação dentro dos comandos de agrupamento

1

Recentemente encontrei um comportamento estranho. O trap não é executado se estiver dentro do comando grouping:

$ 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

É como deveria ser?

    
por x-yuri 27.06.2014 / 14:39

1 resposta

0

Este é um bug que foi corrigido em algum lugar entre as versões >4.2.37 e %código%. Aqui estão informações supostamente relevantes de o changelog :

This document details the changes between this version, bash-4.3-alpha, and the previous version, bash-4.2-release.

...

sss. Fixed a bug that caused asynchronous group commands to not run any EXIT trap defined in the body of the command.

...

tttt. Fixed a problem that caused subshells to not run an EXIT trap they set.

    
por 27.06.2014 / 19:35

Tags