Script BASH et retour variable avec GREP

pcsystemd Messages postés 734 Statut Membre -  
pcsystemd Messages postés 734 Statut Membre -
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

--
L'accès au savoir est la première liberté que chaque homme devrait avoir.
Configuration: Linux
Mozilla 1.9.0.1

3 réponses

  1. pcsystemd Messages postés 734 Statut Membre 23
     
    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
  2. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    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
  3. (Pabix) Messages postés 600 Statut Membre 81
     
    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