Forum Programmation.shell Condition et Grep

Posté par  .
Étiquettes : aucune
0
28
nov.
2005
Bonjour ,


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  . Évalué à 5.

    Bonsoir,

    $ 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  . Évalué à 5.

    $ echo toto | grep ta
    $ 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  . Évalué à 2.

    ou bien garder les crochets mais enlever les "" autour du grep.
  • # Merciiii

    Posté par  . Évalué à 1.

    Merci à tous , effectivement les solutions proposés fonctionaire correctement ...

    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.