Für diejenigen, die nach den setOptionen suchen , finden Sie diese auf dieser Manpage .
Mkobit
Sie können Shebang einfach so verlängern#!/bin/bash -x
sobi3ch
Antworten:
110
bash -x script
oder
set-x
im Drehbuch.
Mit können Sie die Option wieder deaktivieren set +x. Wenn Sie nur ein paar Befehle ausführen möchten, können Sie eine Subshell verwenden: `(set -x; command1; command; ...;)
Ich habe das immer mit großer Wirkung eingesetzt. Die Ausgabe sieht etwas schmutziger aus, als Sie vielleicht zuerst erwarten.
Scott Pack
2
Durch die Einstellung können PS4Sie die Eingabeaufforderung von anpassen -x. ZB: PS4='Line $LINENO @ $(date +%s.%N): ' bash -x script( datewird es aber verlangsamen)
Walter Tross
23
Diese funktionieren auch:
set-v
oder
#!/bin/bash -v
Aber -v gibt den PS4-String nicht vor jeder Skriptzeile aus und verfolgt die Schritte einer "for" -Anweisung (zum Beispiel) nicht einzeln. Es gibt Kommentare aus, -x hingegen nicht.
Hier ist ein Beispiel für die Ausgabe mit -v:
#!/bin/bash -v# this is a commentfor i in{1..4}do
echo -n $i
done1234echo
echo hello
hello
Hier ist das Ergebnis desselben Skripts mit -x:
+for i in'{1..4}'+ echo -n 11+for i in'{1..4}'+ echo -n 22+for i in'{1..4}'+ echo -n 33+for i in'{1..4}'+ echo -n 44+ echo
+ echo hello
hello
Beachten Sie, dass ich "echo -n" eingefügt habe, um die Unterschiede zwischen -v und -x hervorzuheben. Auch -v ist dasselbe wie "-o verbose", aber letzteres scheint nicht als Teil eines Shebang zu funktionieren.
Tolle Erklärung! Ohne Nachforschungen anzustellen, sieht es für mich so aus, als ob Verbose und eXplicit das sind, wofür diese beiden Buchstaben stehen.
set -o xtraceund set +o xtracesind deine Freunde (es ist ausführlicher als -o verbose, und die Ausgabe geht an STDERR, im Gegensatz zu ausführlich, was anscheinend an STDOUT protokolliert wird).
Wenn Sie set -xdas Skript selbst einbinden, wird die Funktionalität aktiviert und set +xdeaktiviert. Beide Methoden funktionieren auch mit der portableren sh-Shell.
Wenn ich mich richtig erinnere, hat Perl auch die Option -x.
set
Optionen suchen , finden Sie diese auf dieser Manpage .#!/bin/bash -x
Antworten:
oder
im Drehbuch.
Mit können Sie die Option wieder deaktivieren
set +x
. Wenn Sie nur ein paar Befehle ausführen möchten, können Sie eine Subshell verwenden: `(set -x; command1; command; ...;)quelle
PS4
Sie die Eingabeaufforderung von anpassen-x
. ZB:PS4='Line $LINENO @ $(date +%s.%N): ' bash -x script
(date
wird es aber verlangsamen)Diese funktionieren auch:
oder
Aber -v gibt den PS4-String nicht vor jeder Skriptzeile aus und verfolgt die Schritte einer "for" -Anweisung (zum Beispiel) nicht einzeln. Es gibt Kommentare aus, -x hingegen nicht.
Hier ist ein Beispiel für die Ausgabe mit -v:
Hier ist das Ergebnis desselben Skripts mit -x:
Beachten Sie, dass ich "echo -n" eingefügt habe, um die Unterschiede zwischen -v und -x hervorzuheben. Auch -v ist dasselbe wie "-o verbose", aber letzteres scheint nicht als Teil eines Shebang zu funktionieren.
quelle
Dies sollte auch funktionieren:
quelle
Das sollte funktionieren:
quelle
set -o xtrace
undset +o xtrace
sind deine Freunde (es ist ausführlicher als-o verbose
, und die Ausgabe geht an STDERR, im Gegensatz zu ausführlich, was anscheinend an STDOUT protokolliert wird).Weitere Tipps finden Sie hier
quelle
Es gibt einige Möglichkeiten.
als die Shebang-Linie.
Wenn Sie
set -x
das Skript selbst einbinden, wird die Funktionalität aktiviert undset +x
deaktiviert. Beide Methoden funktionieren auch mit der portableren sh-Shell.Wenn ich mich richtig erinnere, hat Perl auch die Option -x.
quelle
geht wie
language = Python, Perl, Bash -x = Operator script = Dateiname
ich hoffe es hilft.
quelle
-x
hat nichts mit Echo in Python zu tun#! /bin/bash -x
macht was du willst.quelle