Antworten:
Jede POSIX-kompatible Version vongrep hat den Schalter -qfü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 STDERRlike 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: 2von der caseAnweisung aus gedruckt (vorausgesetzt, wir haben keine Leserechte /etc/shadowoder die Datei existiert nicht), aber die Fehlermeldung von grepwird an weitergeleitet, /dev/nullsodass wir sie nie sehen.
echo $?wenngrepein Exit-Code ungleich Null zurückgegeben wird.