web-dev-qa-db-fra.com

Vérifier si la sortie d'une commande contient une certaine chaîne dans un script Shell

J'écris un script Shell et j'essaie de vérifier si le résultat d'une commande contient une certaine chaîne. Je pense que je dois probablement utiliser grep, mais je ne sais pas comment. Est-ce que quelqu'un sait?

80
user1118764

Testez la valeur de retour de grep:

./somecommand | grep 'string' &> /dev/null
if [ $? == 0 ]; then
   echo "matched"
fi

ce qui se fait idiomatiquement comme ceci:

if ./somecommand | grep -q 'string'; then
   echo "matched"
fi

et aussi:

./somecommand | grep -q 'string' && echo 'matched'
63
perreal

Test $? est un anti-motif

if ./somecommand | grep -q 'string'; then
  echo "matched"
fi
131
mat

Une autre option consiste à vérifier la correspondance des expressions régulières dans la sortie de la commande.

Par exemple:

[[ "$(./somecommand)" =~ "sub string" ]] && echo "Output includes 'sub string'"
0
Noam Manos