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 :

Erreur de test if en bash


Sujet :

Shell et commandes GNU

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2009
    Messages : 70
    Points : 59
    Points
    59
    Par défaut Erreur de test if en bash
    Bonjour

    Je commence a développer en bash, et j'ai un soucis de test entre deux valeurs. Mon code fait une lecture du fichier login.txt pour récupérer tous les logins stocké dedans. Mais, il y a un login que je ne veux pas récupérer.

    Quand je lance le script, il ne trouve pas l'égalité entre les deux valeurs.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    for nom_login in $(cat login.txt);
    do
            if  $nom_login != "root"
            then
                    echo $nom_login
            else
                    echo "c'était root"
            fi
    done
    Merci d'avance de votre aide

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 923
    Points
    17 923
    Billets dans le blog
    2
    Par défaut
    ça marcherait mieux si tu utilisais la syntaxe...

    Il faut des crochets pour entourer la condition...



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            if  [ $nom_login != "root" ]

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 596
    Points : 19 481
    Points
    19 481
    Par défaut
    Pour être exact, [ ne fait pas partie de la syntaxe de if*
    [ est une commande interne à part entière, synonyme de test, dont les éléments obéissent à quelques règles d'usage; notamment, entourer les variables par des guillemets.
    On peut aussi bien faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if [ "$nom_login" != root ]; then echo "ok"; then echo "KO"; fi
    que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if test "$nom_login" != root; then echo "ok"; then echo "KO"; fi
    voire (mais, là, il faut être prudent) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    test "$nom_login" != root && echo "ok" || echo "KO"
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [ "$nom_login" != root ] && echo "ok" || echo "KO"
    *on peut aussi utiliser if sans test, par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if grep  'pattern' any_file &>/dev/null; then...fi

  4. #4
    Rédacteur
    Avatar de lavazavio
    Homme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 673
    Points : 2 412
    Points
    2 412
    Par défaut
    très belle démonstration !

    J'aime

  5. #5
    Membre éclairé Avatar de jmelyn
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2007
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Septembre 2007
    Messages : 703
    Points : 823
    Points
    823
    Par défaut
    Je repasse quelques secondes par ici.

    J'ajoute une autre ligne à l'énumération de N_BaH:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    grep -q pattern file && echo "OK" || echo "KO"
    qui marche aussi en négation:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ! grep -q pattern file && echo "OK" || echo "KO"

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2009
    Messages : 70
    Points : 59
    Points
    59
    Par défaut
    Merci beaucoup pour votre aide, ça marche nikel maintenant.
    :-)

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

Discussions similaires

  1. Surligner les champs en erreur après test
    Par Nicos77 dans le forum Langage
    Réponses: 1
    Dernier message: 24/04/2008, 17h20
  2. Erreur de test
    Par anis50 dans le forum Ruby on Rails
    Réponses: 5
    Dernier message: 24/10/2007, 04h51
  3. Erreur de Test Ogre sur VC++
    Par chebchoub dans le forum Développement 2D, 3D et Jeux
    Réponses: 7
    Dernier message: 03/09/2007, 13h59
  4. Erreur de test if(a==b)
    Par scal-80 dans le forum C++
    Réponses: 3
    Dernier message: 21/06/2006, 17h43
  5. message d'erreur sur test module
    Par Daniel MOREAU dans le forum Access
    Réponses: 5
    Dernier message: 23/11/2005, 21h19

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