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 :

comparer deux chaînes


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683
    Par défaut comparer deux chaînes
    bonjour,
    ma question à l'aire simple pourtant...
    je voudrai lancer un script qui effectue diverses opérations sur une clé usb
    pour cela il faut la monter, et donc connaitre le point de montage...
    en gros c'est soit /dev/sda soit /dev/sdb
    je pensais donc faire un fdisk -l /dev/sda et comparer avec ce que cela me donne si c'est la clé usb (en sda)

    j'ai donc deux valeurs, une qui recois ce que renvois la commande fdisk
    et une autre qui est la valeur attendus ("Disk ... 255 ....")

    seulement si je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if [ "$valeur1" = "$valeur2"  ];
    then
     echo "identique"
    else
     echo "non"
    fi
    j'ai toujours non qui s'affiche...
    pourtant si j'affiche les valeurs celles-ci sont bien les même en tout points...

    merci de votre aide

  2. #2
    Rédacteur
    Avatar de Arnaud F.
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Août 2005
    Messages
    5 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur COBOL
    Secteur : Finance

    Informations forums :
    Inscription : Août 2005
    Messages : 5 183
    Par défaut
    Salut,

    Les opérateurs de comparaisons en Shell ne sont pas les opérateurs classiques.

    Mais pour comparer des entiers, on utilise :
    -eq equals (=)
    -neq non-equals (!=)
    -gt greather than (>)
    -lt lesser than (<)

    etc.

    ++
    C'est par l'adresse que vaut le bûcheron, bien plus que par la force. Homère

    Installation de Code::Blocks sous Debian à partir de Nightly Builds

  3. #3
    Expert confirmé
    Avatar de Michaël
    Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2003
    Messages
    3 497
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Juillet 2003
    Messages : 3 497
    Par défaut
    les opérateurs standards fonctionnent aussi


    dams78, tu as fait l'erreur classique dans les comparaisons.
    un seul = attribution d'une valeur à une variable
    deux = comparaison pour savoir si c'est égal


    donc ton code corrigé est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if [ "$valeur1" == "$valeur2"  ];
    then
     echo "identique"
    else
     echo "non"
    fi

  4. #4
    Membre éprouvé

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 116
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 116
    Par défaut
    On pourrait aussi l'écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if [ -eq "$valeur1"  "$valeur2"  ];
    then
     echo "identique"
    else
     echo "non"
    fi
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if [ ! -neq "$valeur1"  "$valeur2"  ];
    then
     echo "identique"
    else
     echo "non"
    fi
    -gt (greather than) et -lt (plus petit que) sont des opérateurs qui concernent la taille des chaînes ? Sinon, comment fonctionne l'indexation alphabétique ?

  5. #5
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683
    Par défaut
    merci pour vos réponses, ca va bien m'aider

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

Discussions similaires

  1. comparer deux chaînes %
    Par J4e8a16n dans le forum Débuter
    Réponses: 12
    Dernier message: 04/05/2009, 14h30
  2. [MySQL] Comparer deux chaînes
    Par philippef dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 09/07/2008, 16h46
  3. Comparer deux chaînes récupérées de MySQL
    Par Demosis dans le forum JDBC
    Réponses: 2
    Dernier message: 05/10/2007, 18h32
  4. Comparer deux chaînes de caractère
    Par natie_49 dans le forum Langage
    Réponses: 2
    Dernier message: 28/03/2007, 11h53
  5. Comparer deux chaînes de caractères
    Par camoa dans le forum x86 16-bits
    Réponses: 2
    Dernier message: 10/12/2006, 14h30

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