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?
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'
Test $?
est un anti-motif
if ./somecommand | grep -q 'string'; then
echo "matched"
fi
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'"