je voudrais utiliser un grep dans une boucle if , afin de tester si un fichier texte contient un mot précis...
En gros :
if [ "grep ^[^#]\"Order\" ./MonRep/Monfichier ];then
echo "Faire un tel truc"
else
echo "faire un autre truc"
fi
Mon problème c'est qu'il considère toujours le Grep comme vrai (même si le fichier ne contient pas le mot "Order")....et donc , il ne passe jamais dans le else .
D'ou vient le problème et comment le résoudre ???
Merci d'avance.
Dart
# Re: Condition et Grep
Posté par gros_rouge . Évalué à 5.
$ echo "Order" > foo
$ if grep -q "^[^#]*Order" ./foo ; then echo TRUE ; else echo FALSE ; fi
TRUE
$ echo "#Order" > foo
$ if grep -q "^[^#]*Order" ./foo ; then echo TRUE ; else echo FALSE ; fi
FALSE
En resumé :
• Supprimer les crochets ;
• Modifier la regexp.
# variable $?
Posté par symoon . Évalué à 5.
$ echo $?
1
$ echo toto | grep to
toto
$ echo $?
0
C'est le plus propre de tester $? à mon avis :)
Tu peux aussi utiliser grep -c qui te donne le nombre de lignes qui contiennent le motif.
# Ne pas mettre les crochets...
Posté par Xavier Maillard . Évalué à 2.
# Merciiii
Posté par dartalouf . Évalué à 1.
J'ai pas encore tous compris à la syntaxe Shell , mais ça commence à venir ;-)
Merci encore
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.