Réponses:
Toutes les versions compatibles POSIXgrep du commutateur sont -qsilencieuses:
-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 STDERRmanière suivante:
grep -qi 'root' /etc/shadow &> /dev/null ; case "$?" in "0") echo "match" ;; "1") echo "no match" ;; *) echo "error: $?" ;; esac
Cela imprimera à error: 2partir de la casedéclaration (en supposant que nous n’ayons pas de privilèges à lire /etc/shadowou que le fichier n’existe pas), mais le message d’erreur de grepsera redirigé afin /dev/nullque nous ne le voyions jamais.
echo $?sigreprenvoie un code de sortie non nul.