Como a terceira armadilha é criada em um subshell, ela também é ativada / executada quando esse shell sai, tentando remover o terceiro arquivo antes que ele seja criado. Portanto, o terceiro arquivo existe depois que o script é feito.
Toda vez que você trap […] SIGNAL
você sobrescreve a armadilha para aquele sinal, então somente a segunda armadilha sobrevive no topo. Portanto, o primeiro arquivo existe depois que o script é feito.
Um echo
no trap ou possivelmente set -o xtrace
mostraria melhor o que está acontecendo. Você também pode executar trap
por conta própria para ver quais traps estão em vigor.