Eu tenho um script de shell contendo trap, mas trap não parece funcionar como esperado abaixo está o código e a versão bash
GNU bash, versão 4.2.46(2)-release (x86_64-redhat-linux-gnu)
set -e
function exit_message(){
echo -e "\e[31m\nError occurred "
}
function login(){
false
}
trap exit_message ERR
login
A armadilha acima funciona se eu fizer isso
function login(){
trap exit_message ERR
false
}
Responder1
Todos os [...] aspectos do ambiente de execução do shell são idênticos entre uma função e seu chamador, com estas exceções: as armadilhas DEBUG e RETURN não são herdadas, a menos que a função tenha recebido o
trace
atributo usando odeclare
builtin ou a-o functrace
opção tenha sido habilitada com oset
interno (nesse caso, todas as funções herdam as armadilhas DEBUG e RETURN), e a armadilha ERR não é herdada, a menos que a-o errtrace
opção shell tenha sido habilitada.