Fehlerbehandlung in Shell Scripts

Das Standardverhalten in shell scripts ist -anders als in jeder normaler Programmiersprache-, dass bei Fehlern einfach weitergemacht wird.

Und das kann natürlich üble Auswirkungen haben, wenn man später in einem shell script auf Eingaben von früherer Stelle angewiesen ist und diese nicht korrekt verarbeitet werden konnten.

Zum Glück kann man als Option auch in der Shell setzen, dass bei einem Fehler sofort das Script abgebrochen- und nicht einfach weiter gemacht wird.

Dies erreicht man mit der Option:

set -e
set -o pipefail

Die erste Option bewirkt, dass bei einem Fehler das Script abgebrochen wird und die zweite, dass dies auch bei pipes (|) gilt, wie z.B.:
grep db_host /tmp/nicht-existente-datei.cfg | mysql

Zusätzlich kann man noch die Option -u setzen, was bewirkt, dass alle Variablen vor der Verwendung deklariert werden müssen.
So kann man beispielsweise zuverlässig Tippfehler in Variablennamen auffangen.

Diese Optionen lassen sich auch zusammenfassen mit:

set -euo pipefail

Und diese Zeile sollte zuoberst (bzw. gleich unter dem „shebang“ z.B. #!/bin/bash bei jedem Script stehen.

Published by

Steven Varco

Steven ist ein Redhat RHCE-Zertifizierter Linux-Crack und ist seit über 20 Jahren sowohl beruflich wie auch privat auf Linux spezialisiert. In seinem Keller steht ein Server Rack mit diversen ESX und Linux Servern.

One thought on “Fehlerbehandlung in Shell Scripts”

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.