Se você está procurando uma cópia de alguns idiomas ' try { } finally { }
,
existe outra maneira: usar o trap
embutido em bash
e outros POSIXy shells (veja help trap
).
#!/bin/bash
# exit with this by default, if it is not set later
exit_code=0
# the cleanup function will be the exit point
cleanup () {
# ignore stderr from rm incase the hook is called twice
rm -rf "temp_files/" &> /dev/null
# exit(code)
exit $exit_code
}
# register the cleanup function for all these signal types (see link below)
trap cleanup EXIT ERR INT TERM
# run your other script
mycmd.sh
# set the exit_code with the real result, used when cleanup is called
exit_code=$?
Leia sobre os argumentos do comando trap.
Observe que cleanup
é chamado:
- se este script for enviado SIGINT ou SIGTERM ou se CTRL-C for pressionado (SIGINT)
- se este script sair normalmente com 0
- se mycmd.sh sair com status diferente de zero (talvez não seja o que você deseja - remover
ERR
dos argumentos da interceptação para desativar )