Antworten:
Jede POSIX-kompatible Version vongrep
hat den Schalter -q
für leise:
-q
Quiet. Nothing shall be written to the standard output, regardless
of matching lines. Exit with zero status if an input line is selected.
In GNU grep (und möglicherweise in anderen) können Sie auch Synonyme mit langen Optionen verwenden:
-q, --quiet, --silent suppress all normal output
Zeichenfolge vorhanden:
$ echo "here" | grep -q "here"
$ echo $?
0
String existiert nicht:
$ echo "here" | grep -q "not here"
$ echo $?
1
Sie müssen lediglich grep -q <pattern>
eine sofortige Überprüfung des Exit-Codes durchführen, damit der letzte Prozess beendet wird ( $?
).
Sie können dies verwenden, um einen Befehl wie diesen aufzubauen, zum Beispiel:
uname -a | grep -qi 'linux' ; case "$?" in "0") echo "match" ;; "1") echo "no match" ;; *) echo "error" ;; esac
Optional können Sie die Ausgabe von STDERR
like so unterdrücken :
grep -qi 'root' /etc/shadow &> /dev/null ; case "$?" in "0") echo "match" ;; "1") echo "no match" ;; *) echo "error: $?" ;; esac
Dies wird error: 2
von der case
Anweisung aus gedruckt (vorausgesetzt, wir haben keine Leserechte /etc/shadow
oder die Datei existiert nicht), aber die Fehlermeldung von grep
wird an weitergeleitet, /dev/null
sodass wir sie nie sehen.
echo $?
wenngrep
ein Exit-Code ungleich Null zurückgegeben wird.