J'ai le grep
commandement Je cherche un mot-clé dans un fichier, mais je ne souhaite pas afficher la correspondance. Je veux juste connaître le statut de sortie du grep
.
shell-script
scripting
grep
jackass27
la source
la source
echo $?
sigrep
renvoie un code de sortie non nul.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 lacase
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 degrep
sera redirigé afin/dev/null
que nous ne le voyions jamais.la source