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 confirmé
    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
    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 confirmé

    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
    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 646
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 646
    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
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  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 : 43
    Localisation : France, Rhône (Rhône Alpes)

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

    J'aime
    Rédacteur et Modérateur rubriques Linux et Virtualisation
    Mes Articles
    N'oubliez pas de consulter les FAQ Linux et les cours et tutoriels Linux
    N'oubliez pas de consulter les FAQ virtualisation et les cours et tutoriels Virtualisation
    Man pages en français

  5. #5
    Membre émérite 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
    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 confirmé
    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
    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, 16h20
  2. Erreur de test
    Par anis50 dans le forum Ruby on Rails
    Réponses: 5
    Dernier message: 24/10/2007, 03h51
  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, 12h59
  4. Erreur de test if(a==b)
    Par scal-80 dans le forum C++
    Réponses: 3
    Dernier message: 21/06/2006, 16h43
  5. message d'erreur sur test module
    Par Daniel MOREAU dans le forum Access
    Réponses: 5
    Dernier message: 23/11/2005, 20h19

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