Autres projets et contributions
booga
Hankyu
Messages : 39 Inscription : dim. 13 nov. 2011, 19:52
Message
par booga » mar. 11 déc. 2018, 15:18
Bonjour,
J'ai besoin de tester la présence de 2 mots dans un fichier.
S'il s’avère que ces 2 mots sont présents alors le script doit retourner un message ainsi qu'un
exit code .
$1 : 1er mot
$2 : 2e mot
$3 : chemin du fichier
Code : Tout sélectionner
grep -qiE '"$1"|"$2"' "$3"
if [ $? == 0 ]
then
echo "Erreur dans le fichier de log"
exit 2
else
echo "Pas d'erreur dans le fichier de log"
exit 0
fi
Le problème est que j'ai constamment le message m'indiquant qu'il n' y a pas d'erreur même avec des paramètres fantaisistes (ou pas) :
Code : Tout sélectionner
./grep gfjhgfjhfh hjhlklkhjkjhkj /var/log/a.txt
Pas d'erreur dans le fichier de log
La valeur retournée par grep quand il y a une correspondance est bien 0 ?
FoolEcho
Maître du Kyudo
Messages : 10707 Inscription : dim. 15 août 2010, 11:48
Localisation : Basse-Normandie
Message
par FoolEcho » mar. 11 déc. 2018, 16:00
Salut,
Ce sont les apostrophes qui te mettent dedans. Egrep ne va pas interpréter les valeurs de tes paramètres $1 et S2. Donc plutôt:
«The following statement is not true. The previous statement is true.»
booga
Hankyu
Messages : 39 Inscription : dim. 13 nov. 2011, 19:52
Message
par booga » mar. 11 déc. 2018, 16:23
Tu as vu juste.
Merci beaucoup pour ton aide.