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

Linux Discussion :

Condition sur un mot


Sujet :

Linux

  1. #1
    Membre actif

    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    339
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 339
    Points : 279
    Points
    279
    Par défaut Condition sur un mot
    salut à tous,

    j'aime pas changer alors je reste avec mes questions sur le shell

    Bon, voilà mon prog :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    #!/bin/sh
    function tabcar() {
    valuex=a
    echo $valuex
    if [ $valuex==b ];
    then carac=youpib;
    else
    if [ $valuex==a ];
    then carac=youpia;
    fi
    fi
    return;
    }
    ## y'a des trucs ici mais rien d'important.
    tabcar
    value8=$carac
    echo $value8
     
    exit
    Le principe est simple, je voudrais comparer deux mots. J'ai donc commencé par ce cas simple. Le problème c'est qu'il m'affiche tout le temps "youpib" alors qu'il devrait m'afficher "youpia"....

    J'en profite pour poser une deuxième question. Est-il possible de poser une condtion en mixant les majuscules minuscules à la manière de grep. Je m'explique :
    Y'a-t-il un moyen de faire pareil en shell ou dois-je mettre deux conditions séparées par un double pipe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    if [ mot==Bonjour || mot=bonjour ];
    if [ mot==[Bb]onjour ];
    Merci d'avance
    Ma boule de cristal s'était éclaircie et puis plus rien. Alors je me suis mis à internet et maintenant j'ai plus de renseignements qu'avec cette satané boule .....

  2. #2
    Expert confirmé
    Avatar de Katyucha
    Femme Profil pro
    DevUxSecScrumOps Full Stack Bullshit
    Inscrit en
    Mars 2004
    Messages
    3 287
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Irlande

    Informations professionnelles :
    Activité : DevUxSecScrumOps Full Stack Bullshit

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 287
    Points : 5 075
    Points
    5 075
    Par défaut
    pour comparer deux mots, il faut utiliser
    -eq (pour equal) et non == :p
    Grave urgent !!!

  3. #3
    Membre actif

    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    339
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 339
    Points : 279
    Points
    279
    Par défaut
    Je dois vraiment être un boulet

    ça me donne ça :
    ./mdp.sh: line 5: [: a: integer expression expected
    ./mdp.sh: line 8: [: a: integer expression expected
    Pourtant mes lignes ont l'air correctes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    if [ $valuex -eq "b" ];
    if [ $valuex -eq "a" ];
    Avec ou sans guillement, ça me donne la même chose...
    Ma boule de cristal s'était éclaircie et puis plus rien. Alors je me suis mis à internet et maintenant j'ai plus de renseignements qu'avec cette satané boule .....

  4. #4
    Modérateur
    Avatar de ggnore
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 472
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 472
    Points : 4 029
    Points
    4 029
    Par défaut
    Après lecture du résultat de "man test", il faut bien utiliser =, mais un seul. et puis n'hésite pas à entourer ta variable $valeurx de " (guillemets).
    Toutes les vertus des hommes se perdent dans l’intérêt comme les fleuves se perdent dans la mer.
    N'oubliez pas de consulter les FAQ Linux et les cours et tutoriels Linux

  5. #5
    Expert confirmé
    Avatar de Katyucha
    Femme Profil pro
    DevUxSecScrumOps Full Stack Bullshit
    Inscrit en
    Mars 2004
    Messages
    3 287
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Irlande

    Informations professionnelles :
    Activité : DevUxSecScrumOps Full Stack Bullshit

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 287
    Points : 5 075
    Points
    5 075
    Par défaut
    -eq et -ne, c'est pour les nombres
    Grave urgent !!!

  6. #6
    Membre actif

    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    339
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 339
    Points : 279
    Points
    279
    Par défaut
    merci ggnore. Mais toute l'astuce n'était pas là. En fait, il faut en plus laisser un espace avant et après le signe égal. Par contre les guillements ne sont pas obligatoires. Ce qui donne donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    function tabcar() {
    valuex=a
    echo $valuex
    if [ $valuex = b ];
    then carac=youpib;
    else
    if [ $valuex = a ];
    then carac=youpia;
    fi
    fi
    return;
    }
    C'est grâce à la commande test que j'ai trouvé.

    Merci à vous deux
    Ma boule de cristal s'était éclaircie et puis plus rien. Alors je me suis mis à internet et maintenant j'ai plus de renseignements qu'avec cette satané boule .....

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 20
    Points : 16
    Points
    16
    Par défaut
    essaie comme ça peut-être :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if [ $valuex eq "b" ]; 
    if [ $valuex eq "a" ];

  8. #8
    Expert confirmé
    Avatar de becket
    Profil pro
    Informaticien multitâches
    Inscrit en
    Février 2005
    Messages
    2 854
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien multitâches
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 2 854
    Points : 5 915
    Points
    5 915
    Par défaut
    eq sert uniquement a faire une comparaison entre deux nombres.

    Pour comparer deux chaines de caractères, il faut utiliser == ( un simple égal est utilisable également pour une raison de compatibilité POSIX )

  9. #9
    Modérateur
    Avatar de ggnore
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 472
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 472
    Points : 4 029
    Points
    4 029
    Par défaut
    Quand il y a marqué Résolu dans le titre du thread, il n'y a plus besoin de donner des conseils pour trouver la solution: elle a déjà été trouvée.

    Mais bon, vous pouvez étaler votre science dans le vide... C'est permis.
    Toutes les vertus des hommes se perdent dans l’intérêt comme les fleuves se perdent dans la mer.
    N'oubliez pas de consulter les FAQ Linux et les cours et tutoriels Linux

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

Discussions similaires

  1. [RegEx] conditions sur un mot de passe
    Par abdou13om dans le forum Langage
    Réponses: 1
    Dernier message: 21/11/2008, 11h22
  2. UPDATE avec condition sur d'autres tables
    Par guda dans le forum Langage SQL
    Réponses: 7
    Dernier message: 10/03/2005, 11h20
  3. [XSLT][ACCESS]condition sur valeur
    Par kor dans le forum XSL/XSLT/XPATH
    Réponses: 23
    Dernier message: 10/01/2005, 14h14
  4. [SQL] Conditions sur une date dans une requete
    Par poufouille dans le forum Bases de données
    Réponses: 4
    Dernier message: 17/03/2004, 14h25
  5. Condition sur debug et release
    Par xave dans le forum MFC
    Réponses: 3
    Dernier message: 04/02/2004, 15h04

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