Fehlersuche: Shellskripten gesprächiger machen

terminal1 terminal skript shellskript set  x script programmierung linux konsole fehlersuche bash admin

Shellskripting ist ein Prozess, bei dem nicht immer alles so laufen muss, wie man sich das vorstellt.

Gerade bei komplexeren Skripten bricht das Skript mal gerne im Probelauf ab. Doch wo steckt der Fehler? Mit einem einfachen Trick kann man das Skript dazu bringen, mehr Informationen auszuspucken. Dazu fügt man im Skript ein:

set -x

Das folgende Skript enthält zwar keine Syntaxfehler. An diesem einfachen Beispiel kann aber verdeutlicht werden, wie set -x das Skript zu mehr Statusmeldungen veranlasst.

Zunächst das Skript im Normalbetrieb (set -x ist auskommentiert und deshalb deaktiviert):

test@testbox:$ ./test.sh
Im Verzeichnis /home/test/AUDIO sind 892 MP3-Dateien

Hier das Skript test.sh an sich:

#!/bin/sh
# set -x
DIRECTORY="/home/test/AUDIO"
NUMBER="`find $DIRECTORY -type f | grep -i mp3 | wc -l`"
echo "Im Verzeichnis $DIRECTORY sind $NUMBER MP3-Dateien"

Dasselbe Skript in action, diesmal ist set -x jedoch nicht mit # auskommentiert (und damit aktiviert):

test@testbox:$ ./test.sh
+ DIRECTORY=/home/test/AUDIO
+ find /home/test/AUDIO -type f
+ grep -i mp3
+ wc -l
+ NUMBER=892
+ echo Im Verzeichnis /home/test/AUDIO sind 892 MP3-Dateien
Im Verzeichnis /home/test/AUDIO sind 892 MP3-Dateien

Während der Entwicklung von Skripten habe ich set -x standardmäßig im Skript. es wird bei Bedarf aktiviert bzw. deaktiviert. Genauso kann man die Gesprächigkeit mit set -x direkt in der Shell erhöhen. Um es wieder zu deaktivieren, genügt ein:

set +x

Comments are closed