Sulla base della sua esempio, sembra che tu stia cercando di fare qualcosa di simile all'eliminazione di un file temporaneo, indipendentemente da come si esce da uno script. In Bash per fare questo prova il comando incorporato trap
per intercettare il segnale EXIT
.
#!/bin/bash
trap 'rm tmp' EXIT
if executeCommandWhichCanFail; then
mv output
else
mv log
exit 1 #Exit with failure
fi
exit 0 #Exit with success
Il rm tmp
economico nel trap
viene sempre eseguito quando lo script esce, in modo che il file "tmp" volontà sempre cercato di essere eliminato.
Anche le trappole installate possono essere ripristinate; una chiamata al trap con solo un nome di segnale resetterà il gestore del segnale.
trap EXIT
Per maggiori dettagli, vedere la pagina di manuale bash: man bash
controllo '&&' e '' || –
Vedi http://stackoverflow.com/questions/7251619/how-can-i- try-to-do-something-and-then-detect-if-it-fail-in-bash –
Duplicato di http://stackoverflow.com/questions/6961389/exception-handling-in-shell-scripting –