exit mit endgültiger Fehlerbehandlung

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
MoonKid
Beiträge: 513
Registriert: 12.03.2012 22:36:43

exit mit endgültiger Fehlerbehandlung

Beitrag von MoonKid » 13.03.2012 14:07:52

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?

Benutzeravatar
ThorstenS
Beiträge: 2875
Registriert: 24.04.2004 15:33:31

Re: exit mit endgültiger Fehlerbehandlung

Beitrag von ThorstenS » 13.03.2012 14:32:28

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
 

Antworten