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 |