IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

bash: comment mettre le résultat d'une commande dans une variable


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Novembre 2007
    Messages
    176
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 176
    Par défaut bash: comment mettre le résultat d'une commande dans une variable
    Salut,

    je veux savoir comment mettre le résultat de la commande grep dans une variable pour pouvoir tester si le texte recherché a été trouvé ou non.

    Est ce que c'est possible?

    Merci

  2. #2
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 651
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 651
    Par défaut
    Bonjour,

    c'est possible, mais cela n'a rien d'indispensable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if echo "foo bar baz" | grep -sq baz
    then echo "ok"
    else echo "KO"
    fi
    à moins que tu aies besoin du contenu de la recherche ultérieurement
    ...
    ?
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 831
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 831
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par helpcomm Voir le message
    Salut,

    je veux savoir comment mettre le résultat de la commande grep dans une variable pour pouvoir tester si le texte recherché a été trouvé ou non.

    Est ce que c'est possible?

    Merci
    Salut

    Ta question est assez embêtante car on ne sais pas trop si ton but est de vérifier que grep a trouvé ou bel et bien récupérer son résultat. Mais bon, c'est naturel si tu ne connais pas trop encore les possibilités du shell.

    Comme te le montre N_BaH, si tu veux juste vérifier que grep a trouvé, alors tu n'as pas besoin de récupérer son résultat. Car, à l'instar de tout programme Unix, grep se comporte comme un objet booléen. Il renvoie "vrai" s'il trouve et "faux" s'il ne trouve pas.
    Et donc on peut directement le mettre dans une alternative if
    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if grep ...
    then
        echo ok
    else
        echo bad
    fi

    Maintenant, si tu veux récupérer ce qu'il t'affiche, alors il suffit de le mettre entre backquotes comme toute commande Unix.
    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    res=`grep ...`
    echo "Le résultat est $res"

    Backquotes pouvant, dans les shells récents comme bash, être remplacées par $()
    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    res=$(grep ...)
    echo "Le résultat est $res"

    Ce qui autorise aussi, bien entendu, de vérifier quand-même que ça a réussi
    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    res=$(grep ...)
    echo "Le résultat est $res"
    if test -n "$res"
    then
        echo ok
    else
        echo bad
    fi
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  4. #4
    Membre confirmé
    Inscrit en
    Novembre 2007
    Messages
    176
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 176
    Par défaut
    Salut,

    J'ai besoin d'un script bash de nouveau. Et j'ai la même problématique de vouloir utiliser le résultat d'une commande.
    Dans l'exemple ci-dessous le résultat retourné par le script est 0 alors que quand je tape la commande directement dans le terminal, le résultat est 1.
    Savez vous pourquoi?

    --------------- Le script bash -----------------
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    #!/bin/bash          
    stockNumber=12345
    echo $stockNumber
    grepCommand="grep -c \""$stockNumber"</StockNumber>\" myfile"
    echo $grepCommand
    res=$($grepCommand)
    echo $res
    ------------------------------------------------

    --------------Le contenu de myfile -----------------------
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #!/bin/bash          
    stockNumber=12345
    echo $stockNumber
    grepCommand="grep -c \""$stockNumber"</StockNumber>\" myfile"
    echo $grepCommand
    res=$($grepCommand)
    echo $res
    ---------------------------------------------------------

    Merci

  5. #5
    Membre confirmé
    Inscrit en
    Novembre 2007
    Messages
    176
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 176
    Par défaut
    Corrigé

    Je sais pas pourquoi j'avais compliqué les choses

    Voilà la solution:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    #!/bin/bash          
    stockNumber="12345"
    echo $stockNumber
    grepCommand=$(grep -c "$stockNumber</StockNumber>" myfile)
    echo $grepCommand

  6. #6
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 831
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 831
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par helpcomm Voir le message
    Corrigé

    Je sais pas pourquoi j'avais compliqué les choses

    Voilà la solution:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    #!/bin/bash          
    stockNumber="12345"
    echo $stockNumber
    grepCommand=$(grep -c "$stockNumber</StockNumber>" myfile)
    echo $grepCommand
    Yep. La syntaxe du grep est simple: on met la chaine à chercher entre guillemets.
    Et si on a besoin de chercher des guillemets, là on les protège de backslashes
    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    grep "Hector a crié \"en avant\" et nous sommes montés à l'assaut" livre
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XSLT 1.0] Mettre le résultat de l'appel d'une fonction dans une variable
    Par Giovanny Temgoua dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 16/01/2012, 17h47
  2. Réponses: 4
    Dernier message: 02/07/2008, 11h32
  3. Envoyer une formulaire dans une page dans une Frame
    Par zooffy dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 29/06/2007, 10h13
  4. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48
  5. Réponses: 4
    Dernier message: 14/09/2005, 17h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo