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 :

grep puis test variable


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Loisir / Plaisir
    Inscrit en
    Février 2012
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Loisir / Plaisir

    Informations forums :
    Inscription : Février 2012
    Messages : 32
    Par défaut grep puis test variable
    Bonjour

    lorsque le grep trouve la valeur pas de problème par contre si il n'y a aucune correspondance le script ne fait rien ?

    fichier listecopieurs.txt
    COPI-101-1-Dir;Photocopieur;192.168.1.1;00:00:74:48:A8:A1
    COPI-101-2;-Photocopieur;192.168.1.2;00:00:74:48:A8:AD
    COPI-101-ACHATS;Photocopieur;192.168.1.3;00:00:74:48:A8:A2

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    #!/bin/bash
    set -e
    themac=$1
     
    listeimp=$(grep -i "${themac}" listecopieurs.txt)
    if [ -n "${listeimp}" ] ; then
            echo "liste pleine : $listeimp"
             resultatIMP=1
     else
             echo "liste vide"
             resultatIMP=0
     fi
    je ne vois pas mon erreur ?

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Par défaut
    Salut,

    Commente ton set -e et ça devrait aller mieux

  3. #3
    Membre averti
    Homme Profil pro
    Loisir / Plaisir
    Inscrit en
    Février 2012
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Loisir / Plaisir

    Informations forums :
    Inscription : Février 2012
    Messages : 32
    Par défaut
    Merci pour ta réponse , effectivement cela fonctionne

    j'aimerai avoir un complément d'information

    la commande set -e = provoque une sortie immédiate si toute commande simple produit une erreur.

    pourquoi ma commande provoque une erreur que lorsque le grep ne trouve rien ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    listeimp=$(grep -i "${themac}" listecopieurs.txt)

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Par défaut
    Citation Envoyé par plnew Voir le message
    la commande set -e = provoque une sortie immédiate si toute commande simple produit une erreur.

    pourquoi ma commande provoque une erreur que lorsque le grep ne trouve rien
    Parce que si tu testes le code retour de ta commande (echo $?), tu t'apercevras qu'il est égal à "1", autrement dit à "faux".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $ echo "Bonjour" | grep -q 'j'
     
    $ echo $?
    0
     
    $ echo "Bonjour" | grep -q 'a'
     
    $ echo $?
    1
     
    $

  5. #5
    Membre averti
    Homme Profil pro
    Loisir / Plaisir
    Inscrit en
    Février 2012
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Loisir / Plaisir

    Informations forums :
    Inscription : Février 2012
    Messages : 32
    Par défaut
    merci pour l'explication

    y a t-il un moyen de contourner cette effet
    car si grep répond 1 en code retour parce qu'il ne trouve rien , ce n'est pas pour moi une
    erreur comme si la commande c'etait mal passée

    question : a quelle moment utilise t-on le "set -e" ?

  6. #6
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Par défaut
    la commande set -e = provoque une sortie immédiate si toute commande simple produit une erreur.
    En fait non, la commande set -e ne provoque pas une sortie immédiate si toute commande simple produit une erreur, mais un code retour différent de zéro, ce qui n'est pas pareil.


    car si grep répond 1 en code retour parce qu'il ne trouve rien , ce n'est pas pour moi une erreur comme si la commande c'etait mal passée
    C'est vrai, mais comme dit au-dessus, c'est le fait que le code retour soit différent de zéro qui provoque l'arrêt du script


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    question : a quelle moment utilise t-on le "set -e" ?
    Comme avec les options "x" et/ou "v" de la commande "set", à des fins de débogage, mais en tenant bien compte des deux remarques ci-dessus (code retour différent de zéro).

    Après la question serait plutôt : Pourquoi avais-tu mis cette commande dans ton script ? Qu'en attendais-tu ?

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

Discussions similaires

  1. Stockage commande grep dans une variable puis affichage
    Par Isabella83 dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 23/04/2015, 11h13
  2. Grep, Regexp et variables
    Par Invité dans le forum Linux
    Réponses: 6
    Dernier message: 25/07/2007, 17h39
  3. [Tableaux] Test variable à vide
    Par hari37 dans le forum Langage
    Réponses: 9
    Dernier message: 18/12/2006, 20h51
  4. Cherche test variable numerique
    Par nenekes dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 15/11/2006, 09h48
  5. test variable vide
    Par vince2005 dans le forum Langage
    Réponses: 2
    Dernier message: 02/10/2006, 15h00

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