bash - titel - title tag länge




Wie kann ich mit Bash Scripting die gesamte Ausgabe eines Befehls unterdrücken? (5)

Ich habe ein Bash-Skript, das ein Programm mit Parametern ausführt. Dieses Programm gibt einen Status aus (tut dies, macht das ...). Es gibt keine Option für dieses Programm, um ruhig zu sein. Wie kann ich verhindern, dass das Skript etwas anzeigt?

Ich suche etwas wie Windows "Echo aus".


Eine Alternative, die in einigen Situationen passen kann, ist das Zuweisen des Ergebnisses eines Befehls zu einer Variablen:

$ DUMMY=`grep root /etc/passwd`
$ echo $?
0
$ DUMMY=`grep r00t /etc/passwd`
$ echo $?
1

Da Bash und andere POSIX-Befehlszeileninterpreter Variablenzuweisungen nicht als Befehl betrachten, wird der Rückkehrcode des aktuellen Befehls berücksichtigt.


Etwas wie

script > /dev/null 2>&1

Dies verhindert die Ausgabe und Ausgabe von Standardausgaben und leitet sie an /dev/null .


In Ihrem Skript können Sie den Zeilen, von denen Sie wissen, dass sie eine Ausgabe ergeben, Folgendes hinzufügen:

some_code 2>>/dev/null

Oder Sie können es auch versuchen

some_code >>/dev/null

Sehen Sie sich dieses Beispiel aus dem Linux-Dokumentationsprojekt an :

3.6 Beispiel: Datei stderr und stdout 2

Dadurch wird jede Ausgabe eines Programms in eine Datei gestellt. Dies ist manchmal für Cron-Einträge geeignet, wenn Sie möchten, dass ein Befehl absolute Stille übergibt.

     rm -f $(find / -name core) &> /dev/null 

Das heißt, Sie können diese einfache Umleitung verwenden:

/path/to/command &>/dev/null

Wie andynormancx post verwenden Sie dies: (wenn Sie in einer Unix-Umgebung arbeiten)

scriptname > /dev/null

oder Sie können dies verwenden: (wenn Sie in einer Windows-Umgebung arbeiten)

scriptname > nul






echo