PROBLEMA:
Eu tenho um programa shell que estou escrevendo, mas não consigo descobrir como ter certeza de que trap
está travando para limpeza no final ou por causa de um erro em algum comando, ele limpa de qualquer maneira.
Aqui está o código:
################################### Successful exit then this cleanup ###########################################################3
successfulExit()
{
IFS=$IFS_OLD
cd "$HOME" || { echo "cd $HOME failed"; exit 155; }
rm -rf /tmp/svaka || { echo "Failed to remove the install directory!!!!!!!!"; exit 155; }
}
###############################################################################################################################33
####### Catch the program on successful exit and cleanup
trap successfulExit EXIT
PERGUNTA:
Como posso fazer trap
apenas trap EXIT
no final do programa?
Aqui está o roteiro completo:
Ao entrar no
EXIT
trap,$?
contém o status de saída. Esse é o mesmo valor que você encontraria$?
depois de chamar esse script em outro shell: o argumento passado paraexit
(truncado no intervalo de 0 a 255) ou o status de retorno do comando anterior. No caso de uma saída devido aset -e
, é o status de retorno do comando que acionou o implícitoexit
.Normalmente você deve salvar
$?
e sair novamente com o mesmo status.