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 :

Comparaison de plusieures chaines


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
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2013
    Messages : 16
    Par défaut Comparaison de plusieures chaines
    Bonjour,

    Souhaitant faire une fonction de vérification je souhaite faire une boucle qui vérifie plusieurs conditions. Et je rencontre un problème je n'arrive pas à comparer une chaine à plusieurs chaines.



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    while [ let $TAILLE 2>/dev/null ] || [[ "$UNITE" != "Mo" ] && [ "$UNITE" != "Go" ] && [ "$UNITE" != "Ko" ] && [ "$UNITE" != "o" ]]
    do        
     
    read -p "entrez l'espace à libérer (ex : 10 Mo, 3 Go...) : " TAILLE UNITE
    echo -e "$TAILLE $UNITE\n"
     
    done

    ce que j’essaie de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    tant que [ $TAILLE != "numerique" ] OU [ $UNITE != "Mo" OU "Go" OU "Ko" OU "o"]
     
    je boucle...
    Merci d'avance

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 135
    Par défaut
    Tu as essayé [[ ! ${UNITE} = [MGK]o ]] ?
    (pas les moyens de tester )
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2013
    Messages : 16
    Par défaut
    Citation Envoyé par al1_24 Voir le message
    Tu as essayé [[ ! ${UNITE} = [MGK]o ]] ?
    (pas les moyens de tester )
    Ne fonctionne pas :/, c'est vraiment la comparaison de la chaine $UNITE si elle est égale à GO ou Mo ou Ko ou o qui m’ennuie. Car passer par des if c'est pas très propre

    EDIT :

    je viens de voir que ma première condition est mauvaise il me fraudais vérifier si ce n'est pas un numérique en fait en plus des chaines

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2013
    Messages : 16
    Par défaut
    Je crois avoir résolu mon problème, je viens de tester cela à l'air de fonctionner

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    while [[ $TAILLE != +([0-9]) ]] || [ "$UNITE" != "Mo" -a "$UNITE" != "Go" -a "$UNITE" != "Ko" -a "$UNITE" != "o" ]
    do

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 664
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    while [[ $taille != +([0-9]) ||  $unite != ?([KMG])o ]]
    do
       :...
    done
    nb: les noms des variables en minuscules car ce ne sont pas des variables d'environnement.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 03/04/2007, 20h40
  2. Comparaison de 2 chaines
    Par harlock59 dans le forum Linux
    Réponses: 1
    Dernier message: 10/12/2005, 01h06
  3. Réponses: 31
    Dernier message: 25/10/2005, 18h26
  4. Réponses: 5
    Dernier message: 06/10/2003, 17h49
  5. Réponses: 23
    Dernier message: 16/11/2002, 19h41

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