![Äquivalent zu „Echo on“ für Linux?](https://rvso.com/image/1304086/%C3%84quivalent%20zu%20%E2%80%9EEcho%20on%E2%80%9C%20f%C3%BCr%20Linux%3F.png)
Wie kann ich alle Befehle, die im Bash-Skript ausgeführt werden, auf die Standardausgabe bringen?
Das heißt, die Ausgabe muss Befehlsausgabe UND Befehle selbst enthalten.
ich fand
#!/bin/bash -x
aber das ist nicht genau dasselbe, denn statt
mysql -v dbname < dump.sql | grep "CREATE TABLE"
es zeigt
+ mysql -v dbname
+ grep 'CREATE TABLE'
Antwort1
Verwenden bash -v
.
Dies ist das Skript:
#!/bin/bash -v
echo "Hello, World" | sed 's|Hello|Goodbye|'
echo "Done."
Dies ist die Ausgabe:
#!/bin/bash -v
echo "Hello, World" | sed 's|Hello|Goodbye|'
Goodbye, World
echo "Done."
Done.
Leider gibt es keinen speziellen Marker wie PS4
zum Drucken erweiterter Befehle. Man könnte aber beides kombinieren, um Befehle schnell zu identifizieren:
#!/bin/bash -vx
echo "Hello, World" | sed 's|Hello|Goodbye|'
+ echo 'Hello, World'
+ sed 's|Hello|Goodbye|'
Goodbye, World
echo "Done."
+ echo Done.
Done.
Antwort2
set -x ist eine andere Möglichkeit, dies zu tun.
$ cat a.sh
#!/bin/bash
set -x
echo "Hello, World" | sed 's|Hello|Goodbye|'
echo "Done."
Die Ausgabe lautet:
sh a.sh
+ echo 'Hello, World'
+ sed 's|Hello|Goodbye|'
Goodbye, World
+ echo Done.
Done.
Antwort3
set -x
ist gleichbedeutend mit "Echo an"
set +x
ist gleichbedeutend mit "Echo aus"