GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Was macht "set -x"?

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.


Linux
  1. Was bedeutet „–“ (Doppelstrich)?

  2. Was bedeutet Echo $? Tun??

  3. Was macht Libgl_always_indirect=1 eigentlich?

  4. Was macht . ~/.bashrc Befehl Tun??

  5. Was genau macht Grub_gfxpayload_linux=text?

Was macht ?

Was bewirkt „set -f“ in der Korn-Shell?

Was bedeutet Exec 3?

Was gibt malloc(0) zurück?

Ursprung eines kworker-Threads

Was macht 'bash -c'?