Linux-Workshop

Shell Scripting - Tipps und Tricks für Admins

Script-Debugging

Wenn das Skript nicht wie erwartet abläuft, hilft es, sich der Debugging-Möglichkeiten der Bash zu bedienen:

#!/bin/bash

mytrap()

{

echo "Trap catched..$?"

}

trap 'mytrap' 0

trap 'echo debug[$LINENO]: $BASH_COMMAND' DEBUG

#set -e

echo starting.. $$

false

sleep 10

echo finish.

Ausführen des Skripts "run.sh":

> ./run.sh

debug[17]: echo starting.. $$

starting.. 3242

debug[18]: false

debug[19]: sleep 10

debug[20]: echo finish.

finish.

debug[1]: echo finish.

Trap catched..0

Das DEBUG-Signal beim trap-Handler ruft den Handler vor jeder Befehlsausführung auf und der Handler gibt uns die Zeilennummer im Skript beziehungsweise der Funktion und den auszuführenden Befehl dazu aus.

Setzen wir die Option "-e", dann wird das Skript beendet, sobald ein Befehl darin einen Exit-Wert > 0 liefert:

./run.sh

debug[15]: set -e

debug[17]: echo starting.. $$

starting.. 3378

debug[18]: false

debug[1]: false

Trap catched..1