Wie die Unterdrückung der Ausgabe von einem Befehl Bash verwenden?
Habe ich ein bash-Skript, das ausgeführt wird ein Programm mit Parametern. Das Programm gibt einige status (dieses tun, jenes tun...). Es gibt keine Möglichkeit, dieses Programm zu stillen. Wie kann ich verhindern, dass das Skript von der Anzeige nichts?
Ich bin auf der Suche nach so etwas wie windows "echo off".
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den folgenden sendet die standard-Ausgabe zu die null-Gerät (bit bucket).
und wenn Sie wollen auch Fehlermeldungen gesendet werden, verwenden Sie eine (die erste funktioniert möglicherweise nicht in allen shells):
und, wenn Sie aufnehmen möchten, die Nachrichten, aber sehen Sie, ersetzen
/dev/null
mit einer tatsächlichen Datei, wie:Vollständigkeit, der unter Windows cmd.exe (wo "nul", das äquivalent von "/dev/null"), es ist :
echo foo > $(tty)
in einem Skript, und führen Sie./test.sh &> /dev/null
- Der Ausgang ist immer noch gedruckt, um das terminal. Das ist natürlich kein problem, wenn du schreibst ein script, das benutzt jedoch keine solchen Befehle.nul
.Etwas wie
Wird dies zu verhindern standard-Ausgabe und Fehlerausgabe umleiten Sie beide zu
/dev/null
.Versuchen
:
ist die Abkürzung für "nichts tun".$()
nur dein Befehl.0
(Erfolg). Mal sehen, ein Beispiel mit dem Befehlfalse
, die immer wieder1
(Ausfall). Zum Beispiel( echo foo | tee file ; false ) && echo bar
zeigtfoo
. Mit Ihrem trick, um zu unterdrücken der Ausgabe:( : $(echo foo | tee file ; false) ) && echo bar
. Aber es zeigtbar
Bedeutung der status-code ist0
(dies ist nicht der zurückgegebene status-code vonfalse
). Bitte aktualisieren Sie Ihre Antwort mit der Bereitstellung dieser Einschränkung. CheersDUMMY=$(yourcommand)
? Sie haben nicht die Beschränkung, die Sie erwähnt haben. 🙂DUMMY=$( echo foo | tee file ; false ) && echo bar
nichts angezeigt. Und der BefehlDUMMY=$( echo foo | tee file ; true ) && echo bar
zeigtbar
. Lassen Sie mich wissen, wenn Ihr eine Antwort upvote es 😉 CheersEine alternative, die passen in einigen Situationen ist die Zuordnung das Ergebnis eines Befehls in eine variable:
Da Bash und anderen POSIX-Kommandozeile Dolmetscher nicht als Variablen-Zuordnungen werden als ein Befehl, der gegenwärtige Befehl ist return-code eingehalten wird.
Hinweis: Ausgangsbelegung mit der
typeset
oderdeclare
Schlüsselwort ist, als ein Befehl, so dass die ausgewertet return-code, im Fall der Abtretung selbst und nicht der ausgeführte Befehl in der sub-shell:Wie andynormancx post verwenden: (wenn Sie arbeiten in einer Unix-Umgebung)
oder Sie können diese verwenden: (wenn Sie arbeiten in einer Windows-Umgebung)
Werfen Sie einen Blick auf dieses Beispiel aus Das Linux-Dokumentations-Projekt:
Das heißt, Sie können mit diesem einfachen Umleitung:
In Ihr Skript können Sie fügen Sie die folgenden Zeilen, dass Sie wissen, dass Sie gehen zu geben, ein Ausgang:
Sonst können Sie auch versuchen,