Antworten:
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; ...;)
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:
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 comment
for i in {1..4}
do
echo -n $i
done
1234echo
echo hello
hello
Hier ist das Ergebnis desselben Skripts mit -x:
+ for i in '{1..4}'
+ echo -n 1
1+ for i in '{1..4}'
+ echo -n 2
2+ for i in '{1..4}'
+ echo -n 3
3+ for i in '{1..4}'
+ echo -n 4
4+ 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.
Es gibt einige Möglichkeiten.
#!/usr/bin/env bash -x
als die Shebang-Linie.
Wenn Sie set -x
das Skript selbst einbinden, wird die Funktionalität aktiviert und set +x
deaktiviert. Beide Methoden funktionieren auch mit der portableren sh-Shell.
Wenn ich mich richtig erinnere, hat Perl auch die Option -x.
geht wie
language -x script
language = Python, Perl, Bash -x = Operator script = Dateiname
ich hoffe es hilft.
-x
hat nichts mit Echo in Python zu tun
set
Optionen suchen , finden Sie diese auf dieser Manpage .