it-swarm.com.de

Was macht `set -x`?

Ich habe ein Shell-Skript mit der folgenden Zeile:

[ "$DEBUG" == 'true' ] && set -x
189
Ole

set -x aktiviert einen Modus der Shell, in dem alle ausgeführten Befehle auf dem Terminal ausgegeben werden. In Ihrem Fall wird es eindeutig zum Debuggen verwendet. Dies ist ein typischer Anwendungsfall für set -x: Das Drucken jedes ausgeführten Befehls kann Ihnen dabei helfen, den Steuerungsfluss des Skripts zu visualisieren, wenn es nicht wie erwartet funktioniert.

262
John Zwinck

set -x

Gibt eine Ablaufverfolgung einfacher Befehle für Befehle, Groß-/Kleinschreibung, Auswahlbefehle und Arithmetik für Befehle und deren Argumente oder zugeordnete Wortlisten aus, 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.

Beispiel

set -x
echo `expr 10 + 20 `
+ expr 10 + 20
+ echo 30
30

set +x
echo `expr 10 + 20 `
30

Das obige Beispiel zeigt die Verwendung von set -x. Wenn es verwendet wird, wurde der obige arithmetische Ausdruck erweitert. Wir konnten sehen, wie eine einzelne Linie Schritt für Schritt ausgewertet wurde.

  • Erster Schritt expr wurde bewertet.
  • Zweiter Schritt echo wurde ausgewertet.

Um mehr über 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 optionalen Argumenten wie -d aufgerufen wurde.

62
Raju