Wenn irgendwo in meinem Script ein "exit 1" auftaucht, würde ich gerne bevor die bash, wirklich aus dem Script aussteigt, noch eine letzte Möglichkeit haben etwas auszuführen (err-log, err-sound, ...).
Geht sowas?
Sozusagen eine eingebaute before_exit, die bash per default aufruft und die man überschreiben könnte?
exit mit endgültiger Fehlerbehandlung
Re: exit mit endgültiger Fehlerbehandlung
Code: Alles auswählen
Aufräumen bei Abbruch eines Shellscripts:
TMP=$(tempfile)
trap "rm -f $TMP" EXIT
trap true TERM
kill -- -$$
The first line means that when the shell receives a TERM signal, it executes true. The normal behaviour would be to kill the process, so this means that the shell is immune to people sending a TERM signal to it. The second line sends a TERM signal to the process group (- is the modifier to indicate a the process group of the PID, not just the PID) of the current process ($$).
The end result? Everything spawned by this script which hasn't gone and re-parented itself is killed: the ultimate in cleanup.
##########################################################
# Error und STRG+C abfangen:
function error() {
echo -e "Es gab einen Fehler."
exit 1
}
trap error ERR INT
# ----------------------------------------------
# Trap CTRL+C, CTRL+Z and quit singles
# ----------------------------------------------
trap '' SIGINT SIGQUIT SIGTSTP