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 :

question avec la condition IF


Sujet :

Linux

  1. #1
    Membre habitué Avatar de vbcasimir
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    455
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2003
    Messages : 455
    Points : 168
    Points
    168
    Par défaut question avec la condition IF
    bonjour

    Je voudrais savoir si il est possible d'exprimer plusieurs condition avec un if

    Je m'explique voici la commande actuelle

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    $(grep "sans avertissements" ${FICHIER_LOG_EXP}) > /dev/null 
    if [ $? -eq 0 ]
    then
    SORTIE_VALID=0
    SUJET="export base chronotique production GTP => OK"
    else
    SORTIE_VALID=1
    SUJET="export base chronotique production GTP => pas OK"
    fi
    mon souci est que le fichier log ne retourne pas toujours le même message il peut être en anglais ce qui donne "without advertissement"

    Je voudrais pouvoir dans la même expression mettre les deux possibilités qui renvoie de toute façon vers le même aboutissement.

    Je voudrais éviter de rentrer dans les scripts de type awk qui demanderait un peu plus de ligne de code..

    Donc est-il possible d'écrire quelque chose qui ressemblerait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    if [ $(grep "sans avertissements" ${FICHIER_LOG_EXP}) > /dev/null ] && [ $? -eq 0 ]
     
    ....
    je sais ce que j'ai écris ne fonctionne pas c'est juste une traduction de l'idée

    Merci

  2. #2
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 739
    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 739
    Points : 31 068
    Points
    31 068
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par vbcasimir Voir le message
    bonjour

    Je voudrais savoir si il est possible d'exprimer plusieurs condition avec un if

    Je m'explique voici la commande actuelle

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    $(grep "sans avertissements" ${FICHIER_LOG_EXP}) > /dev/null 
    if [ $? -eq 0 ]
    then
    SORTIE_VALID=0
    SUJET="export base chronotique production GTP => OK"
    else
    SORTIE_VALID=1
    SUJET="export base chronotique production GTP => pas OK"
    fi
    mon souci est que le fichier log ne retourne pas toujours le même message il peut être en anglais ce qui donne "without advertissement"

    Je voudrais pouvoir dans la même expression mettre les deux possibilités qui renvoie de toute façon vers le même aboutissement.

    Avant de répondre, il faut savoir que le if ne vérifie jamais une expression mais une commande. En effet, toute commande renvoie vrai ou faux donc on peut toujours programer une alternative. Exemples:
    if grep ...
    if ls ...
    if find ...

    Toutefois, on ne peut en vérifier qu'un à la fois.

    Cependant, le shell possède l'opérateur "&&" qui permet de chainer les vérifications. Ex
    grep ... && ls ... && find ...
    Si une des instructions renvoie "faux", tout s'arrête. Sinon ça continue jusqu'à la dernière qui renvoie en final son code d'état. Code qu'on peut vérifier avec un if. Ex:
    if grep ... && ls ... && find ...
    then
    ...
    fi

    En ce qui concerne les expressions, celles-ci sont évaluées par la commande "test" qui évalue l'expression et, comme toute commande, renvoie vrai ou faux. Ainsi on en arrive à l'expression qu'on voit dans 99% des cas "if test ..."
    Ainsi, on peut utiliser la syntaxe précédente pour chainer plusieurs tests, ex:
    test "$HOME" = "/home/machin" && test "$PWD" = "/tmp"
    Mais la commande test possède son propre connecteur "and" qui est "-a". Et donc, la commande précédente devient
    test "$HOME" = "/home/machin" -a "$PWD" = "/tmp" => Une seule commande au lieu de 2

    Partant de là, tu peux programmer tous les tests que tu souhaites.

    Pour en répondre à ta question, tu cherches si ton fichier contient "sans avertissement" ou "without advertissement". Donc faut programmer un "or" et non un "and" => je pense que tu pourras adapter mon développement précédent qui parle surtout du "and" au "or" qui va bien...

    Citation Envoyé par vbcasimir Voir le message
    Donc est-il possible d'écrire quelque chose qui ressemblerait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    if [ $(grep "sans avertissements" ${FICHIER_LOG_EXP}) > /dev/null ] && [ $? -eq 0 ]
     
    ....
    je sais ce que j'ai écris ne fonctionne pas c'est juste une traduction de l'idée

    Merci
    Idée manifestement mal traduite. Tu as écrit "if test grep ... && test $? -eq 0". Pourquoi appeler "test" pour un grep ??? Le grep étant une commande, il peut être évalué directement
    if grep ... && [ $? -eq 0 ]

    Accessoirement, cette évaluation signifie "si le grep réussi et si la commande a renvoyé un code 0" ce qui est inutile puisque le grep renvoie 0 quand il réussi...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if grep "sans avertissement" fichier 1>/dev/null || grep "without advertisment" fichier 1>/dev/null
    then
         ...
    fi

  3. #3
    Membre habitué Avatar de vbcasimir
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    455
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2003
    Messages : 455
    Points : 168
    Points
    168
    Par défaut
    c'est bon ça fonctionne !!!

    merci beaucoup on cherche toujours trop compliqué

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 24/10/2005, 14h47
  2. Problème de requête avec une condition IN
    Par sorcer1 dans le forum Langage SQL
    Réponses: 5
    Dernier message: 20/10/2005, 12h56
  3. envoyer submit avec une condition !
    Par delphinote dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 01/07/2005, 16h52
  4. Requete de suppression avec en condition une date
    Par PrinceMaster77 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 29/04/2004, 10h23

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