Unterdrücken `Satz -v` / `set -x` logging nur für eine einzelne Zeile in der bash
Ich Schreibe ein .sh-Skript wie dem folgenden:
echo script started
./some_command > output_file
echo script ended
Möchte ich die Ausgabe der folgenden:
script started
./some_command > output_file
script ended
Ich habe versucht set -v
, set +v
aber es hat nicht richtig funktioniert,
gibt es etwas ähnlich @echo
im batch -?
Dank
am Anfang Ihrer shell-Skript verwenden
Ich wollte vorschlagen, die Sie verwenden standard-Fehler-in etwa so:
ja, ich möchte die Ausgabe meiner Befehle, außer dem Befehl echo, sorry für die Verwirrung
Was Sie versuchen, zu tun, scheint nicht standard und Probleme anfällig.
Gib nicht so schnell auf und akzeptieren eine Antwort, die Sie nicht mögen... das Sie gerade gebucht dies 3 Stunden. Vielleicht den Titel ändern, weil das, was Sie wirklich wollen, zu tun zu sein scheint, drucken Sie die Befehle in ein bash-Skript, außer don ' T echo-das echo-Kommando zweimal...
#!/bin/sh -x
wird Dieser Ausgang wird bei jeder AusführungIch wollte vorschlagen, die Sie verwenden standard-Fehler-in etwa so:
echo script started >&2
, dann führen Sie Ihr Skript mit myscript 2> /dev/null
, aber das scheint nicht das zu sein, was Sie wollen.ja, ich möchte die Ausgabe meiner Befehle, außer dem Befehl echo, sorry für die Verwirrung
Was Sie versuchen, zu tun, scheint nicht standard und Probleme anfällig.
Gib nicht so schnell auf und akzeptieren eine Antwort, die Sie nicht mögen... das Sie gerade gebucht dies 3 Stunden. Vielleicht den Titel ändern, weil das, was Sie wirklich wollen, zu tun zu sein scheint, drucken Sie die Befehle in ein bash-Skript, außer don ' T echo-das echo-Kommando zweimal...
InformationsquelleAutor Monster Hunter | 2013-09-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das tut, was Sie möchte :
Dies ist der einfache Weg.
es gibt einen Weg, mit
eval
aber nicht verwenden (Fragen der Sicherheit). KUSS. 'eval' ist eine häufige Rechtschreibfehler von "böse". Wenn eval ist die Antwort, sicherlich sind Sie die falsche Frage gestellt. Siehe mywiki.wooledge.org/BashFAQ/048scheint, als gäbe es keine besseren Lösungen. Ich denke, ich nehme Euch die Antwort.
InformationsquelleAutor Gilles Quenot
Mit
bash -x
aus dem Kommentar von @TopGunCoder:Die AUSGABE jedes Befehls, gefolgt von seinem Ergebnis:
echo
, dann -- könnte man laufen: "$0" started
, und die gleiche Wirkung haben, aber mit einem kürzeren Präfix und keine Notwendigkeit für eine>/dev/null
Umleitung. (:
ist ein synonym fürtrue
, aber ein konventionell/traditionell verstanden, dass diese Art von Platzhalter verwenden).Danke, Charles. Ich wusste nicht, über
:
. Dies wurde beantwortet vor langer Zeit, und ich denke, dass ich nur an die OP ' s Beispiel. Nicht sicher, warum lege ich noch die Umleitung.InformationsquelleAutor beroe
Anstatt
echo
nur ersetzen Sie es mit#
so echo nicht angezeigt, und Sie bekommen noch ein feedbackInformationsquelleAutor TopGunCoder