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 :

Deux conditions à vérifier


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2011
    Messages
    179
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 179
    Par défaut Deux conditions à vérifier
    Bonjour,

    comment faire pour vérifier deux conditions (si une valeur existe ou l'autre, alors ...)

    j'ai fait ça comme début de script, mais forcément, il vérifie les deux en même temps mais pas l'un ou l'autre :

    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
    #!/bin/bash
     
    cmd=$(awk -vword="$ORL2$3" '($0 ~ "^(.* )?"word"( .*)?$"){print $2}' "$dir$file" | wc -l)
    cmd2=$(awk -vword="$ORL$1" '($0 ~ "^(.* )?"word"( .*)?$"){print $2}' "$dir$file" | wc -l)
     
     
    # on verifie qu'une IP donnee par l'utilisateur n'existe pas déjà dans le fichier de reservation, si elle existe, on arrete le processus
     
     
    # echo $ORL2$3
    echo $cmd
    # echo $ORL$1
    echo $cmd2
     
    if [[ $cmd != "0" ]] || [[ $cmd2 != "0" ]]
    then
    echo "$ORL2$3 - $ORL$1 existe, merci de recommencer"
    fi
    j'ai cru voir du while avec du -ne 0 (par exemple) mais j'avoue que je suis un peu perdu pour le coup !

    merci pour l'aide !

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 658
    Par défaut
    Bonjour,

    le script donné devrait faire ce que tu veux : si l'une des valeurs est égale à zéro.
    note que les valeurs numériques devraient être testés avec les opérateurs arithmétiques : -eq -ne -lt -gt.

    veux-tu que le script interagisse avec l'utilisateur jusqu'à ce que l'une ne corresponde pas ?
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Membre confirmé
    Inscrit en
    Janvier 2011
    Messages
    179
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 179
    Par défaut
    hello ! en effet j'ai répondu tout seul à ma question comme un grand

    j'ai fait ma vérification autrement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    if [[ $cmd -ne "0" ]] 
    then
       echo "<b style='color:red;'>$ORL2$3 existe, merci de v&eacute;rifier le nom de l'imprimante</b>"
       exit 0
    elif [[ $cmd2 -ne "0" ]]
    then
       echo "<b style='color:red;'>$ORL$1 existe, merci de v&eacute;rifier l'IP</b>"
       exit 1
    fi
    ça fonctionne très bien comme ça

  4. #4
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 835
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par tetzispa Voir le message
    ça fonctionne très bien comme ça
    Bonjour

    La comparaison numérique (-ne, -eq, etc) n'a pas besoin de quotter la valeur (les quottes signifient conventionnellement "chaine")
    De plus, si tu mets un "exit" ça veut dire que le code s'arrête. Donc pour l'autre cas t'as pas besoin de "elif". Et enfin la sortie "0" signifie conventionnellement "programme ok" ce qui me semble en inadéquation avec le fait que le nom de l'imprimante ne soit pas bon...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    if [[ $cmd -ne 0 ]] 
    then
       echo "<b style='color:red;'>$ORL2$3 existe, merci de v&eacute;rifier le nom de l'imprimante</b>"
       exit 1
    fi
    if [[ $cmd2 -ne 0 ]]
    then
       echo "<b style='color:red;'>$ORL$1 existe, merci de v&eacute;rifier l'IP</b>"
       exit 2
    fi
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

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

Discussions similaires

  1. Vérifier simultanément deux conditions
    Par Ozana dans le forum Langage
    Réponses: 2
    Dernier message: 21/06/2014, 21h28
  2. Vérifier deux conditions
    Par CLeBeR dans le forum VB.NET
    Réponses: 4
    Dernier message: 01/05/2012, 20h52
  3. [FLASH MX2004] Deux conditions dans une boucle
    Par pierrot10 dans le forum Flash
    Réponses: 1
    Dernier message: 06/11/2005, 16h31
  4. Peut on faire un selon à deux conditions ?
    Par Celia1303 dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 18/10/2005, 16h16
  5. Instructions select case à deux conditions
    Par Celia1303 dans le forum Access
    Réponses: 15
    Dernier message: 14/10/2005, 16h22

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