set -x
Druckt eine Ablaufverfolgung einfacher Befehle, für Befehle, case-Befehle, select-Befehle und Arithmetik für Befehle und deren Argumente oder zugehörige Wortlisten, nachdem sie erweitert wurden und bevor sie ausgeführt werden. Der Wert der PS4-Variablen wird erweitert und der resultierende Wert wird vor dem Befehl und seinen erweiterten Argumenten gedruckt.
[Quelle]
Beispiel
set -x
echo `expr 10 + 20 `
+ expr 10 + 20
+ echo 30
30
set +x
echo `expr 10 + 20 `
30
Das obige Beispiel veranschaulicht die Verwendung von set -x
. Wenn es verwendet wird, wurde der obige arithmetische Ausdruck erweitert. Wir konnten sehen, wie eine einzelne Zeile Schritt für Schritt ausgewertet wurde.
- Erster Schritt
expr
wurde evaluiert. - Zweiter Schritt
echo
wurde evaluiert.
Um mehr über das Set zu erfahren → besuchen Sie diesen Link
wenn es um Ihr Shell-Skript geht,
[ "$DEBUG" == 'true' ] && set -x
Ihr Skript hat möglicherweise einige zusätzliche Informationszeilen gedruckt, als der Ausführungsmodus als DEBUG
ausgewählt wurde . Traditionell wurde der Debug-Modus aktiviert, wenn ein Skript mit einem optionalen Argument wie -d
aufgerufen wurde
-u:standardmäßig deaktiviert. Wenn aktiviert, wird eine Fehlermeldung angezeigt, wenn eine nicht konfigurierte Variable verwendet wird.
-v:standardmäßig inaktiv. Nach der Aktivierung wird der ursprüngliche Inhalt der Informationen (ohne variable Auflösung) angezeigt, bevor die Informationen ausgegeben werden.
-x:standardmäßig inaktiv. Wenn aktiviert, wird der Befehlsinhalt angezeigt, bevor der Befehl ausgeführt wird (nach der Variablenauflösung steht ein ++-Symbol).
Vergleichen Sie die folgenden Unterschiede:
/ # set -v && echo $HOME
/root
/ # set +v && echo $HOME
set +v && echo $HOME
/root
/ # set -x && echo $HOME
+ echo /root
/root
/ # set +x && echo $HOME
+ set +x
/root
/ # set -u && echo $NOSET
/bin/sh: NOSET: parameter not set
/ # set +u && echo $NOSET
set -x
aktiviert einen Modus der Shell, in dem alle ausgeführten Befehle an das Terminal ausgegeben werden. In Ihrem Fall wird es eindeutig zum Debuggen verwendet, was ein typischer Anwendungsfall für set -x
ist :Das Drucken jedes Befehls während seiner Ausführung kann Ihnen helfen, den Kontrollfluss des Skripts zu visualisieren, wenn es nicht wie erwartet funktioniert.
set +x
deaktiviert es.