If et grep en bash -- Rechercher une chaine et if statement
anselme
-
Flachy Joe Messages postés 2303 Statut Membre -
Flachy Joe Messages postés 2303 Statut Membre -
Bonjour,
J'essaye de faire un petit script bash qui effectue une action s' il trouve une chaine dans fichier mais impossible de le faire marcher.
je ne comprends pas pourquoi..
A chaque fois il me renvoie l'action "Pas bon" ; alors que j'ai bien la chaine dans un de mes fichiers.
J'ai l'impression que le grep ne renvoie pas 0 à la sortie..
Peut-être pouvez-vous m'aider .
#!/bin/bash
find /home/ -type f | xargs grep -q 'chaineatrouver'
if [ $? == 0 ] #if the result is not equal to zero
then
echo "Action"
else
echo "Pas d'action"
exit 1
fi
exit 0
Merci d'avance
J'essaye de faire un petit script bash qui effectue une action s' il trouve une chaine dans fichier mais impossible de le faire marcher.
je ne comprends pas pourquoi..
A chaque fois il me renvoie l'action "Pas bon" ; alors que j'ai bien la chaine dans un de mes fichiers.
J'ai l'impression que le grep ne renvoie pas 0 à la sortie..
Peut-être pouvez-vous m'aider .
#!/bin/bash
find /home/ -type f | xargs grep -q 'chaineatrouver'
if [ $? == 0 ] #if the result is not equal to zero
then
echo "Action"
else
echo "Pas d'action"
exit 1
fi
exit 0
Merci d'avance
1 réponse
-
Salut,
voila une solution :#!/bin/bash if [ -n "$(find /home/ -type f -exec grep "chaine" {} \; -quit )" ] then echo "Action" else echo "Pas d'action" exit 1 fi exit 0
-
-
C'est le comportement du script de départ, man grep :
-q, --quiet, --silent Ne pas afficher les résultats normaux. Sortir immédiatement avec un code de retour égal à zéro dès qu'une correspondance est trouvée, même si une erreur est détectée. Voyez aussi l'option -s ou --no-messages. (-q est spécifiée dans POSIX) -
-
Certes mais je pense que c'est voulu, cette option -q il a fallu aller la chercher. Si le nombre ou le nom du fichier avait importé c'est sans doute pas cette commande qui aurait été utilisée.
Enfin, vu les connaissance qu'on a sur l'utilité du script on peut tout imaginer, donc c'est vrai qu'on peu donner le plus d'info possible. -
-