Script BASH et retour variable avec GREP

Fermé
pcsystemd Messages postés 702 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 6 novembre 2024 - 16 oct. 2008 à 18:14
pcsystemd Messages postés 702 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 6 novembre 2024 - 17 oct. 2008 à 05:56
Bonjour,

voila dans mon script bash j'ai donné la valeur suivante a deux variables :
FILE="test.txt"
AGTEST=`grep -q "^[^#]*DEBUG" ${FILE}`

Le problème c'est que la valeur de $AGTEST est pas retournée.
Effectivement si je saisie en console :
AGTEST=`grep -q "^[^#]*DEBUG" ${FILE}` 

puis
echo $AGTEST

rien n'est retournée alors que dans mon fichier test.txt le mot DEBUG est bien présent.
Une idée?
Merci

3 réponses

pcsystemd Messages postés 702 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 6 novembre 2024 23
17 oct. 2008 à 05:56
Merci a vous deux. Mille excuses jipicy car j'aurais du regarder le man de grep surtotu qu'en plus je sais qu'en general le -q vaut --quiet.

Merci Pabix, pour tes informations. Je vais testé.
2
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 896
16 oct. 2008 à 18:17
Salut,

Extrait du man grep :
-q, --quiet, --silent
              Ne pas afficher les  résultats  normaux.   Sortir  immédiatement
              avec  un  code de retour égal à zéro si aucune concordance n'est
              trouvée, et même  si  une  erreur  est  détectée.   Voyez  aussi
              l'option -s ou --no-messages.
;-))
0
(Pabix) Messages postés 578 Date d'inscription mercredi 18 mai 2005 Statut Membre Dernière intervention 27 octobre 2009 81
16 oct. 2008 à 18:24
Bonjour, tu fais quelques erreurs de programmation ; il faut toujours, par précaution, metre des guillemets autour des déréférencements avec $

FILE="test.txt"
AGTEST="$(grep -q "^[^#]*DEBUG" "$FILE")"

Là, AGTEST stockera la sortie de la commande grep. Ce que tu veux c’est la valeur de retour :

FILE="test.txt" ; grep -q "^[^#]*DEBUG" "$FILE ; AGTEST="$?"

Mais si tu veux juste faire qqch si ça s’est bien déroulé, c’est

grep machin truc && autre commande

Ou alors, si une erreur a eu lieu :

grep machin truc || (echo "Erreur" ; exit)
0