Réponses:
Toutes les versions compatibles POSIXgrep
du commutateur sont -q
silencieuses:
-q
Quiet. Nothing shall be written to the standard output, regardless
of matching lines. Exit with zero status if an input line is selected.
Dans GNU grep (et éventuellement d’autres), vous pouvez également utiliser des synonymes à option longue:
-q, --quiet, --silent suppress all normal output
La chaîne existe:
$ echo "here" | grep -q "here"
$ echo $?
0
La chaîne n'existe pas:
$ echo "here" | grep -q "not here"
$ echo $?
1
Vous devez simplement combiner grep -q <pattern>
avec une vérification immédiate du code de sortie du dernier processus à quitter ( $?
).
Vous pouvez utiliser ceci pour construire une commande comme celle-ci, par exemple:
uname -a | grep -qi 'linux' ; case "$?" in "0") echo "match" ;; "1") echo "no match" ;; *) echo "error" ;; esac
Vous pouvez éventuellement supprimer la sortie de la STDERR
manière suivante:
grep -qi 'root' /etc/shadow &> /dev/null ; case "$?" in "0") echo "match" ;; "1") echo "no match" ;; *) echo "error: $?" ;; esac
Cela imprimera à error: 2
partir de la case
déclaration (en supposant que nous n’ayons pas de privilèges à lire /etc/shadow
ou que le fichier n’existe pas), mais le message d’erreur de grep
sera redirigé afin /dev/null
que nous ne le voyions jamais.
echo $?
sigrep
renvoie un code de sortie non nul.