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 :

Aide structure if then fi


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 11
    Par défaut Aide structure if then fi
    Bonjour,
    je me demande si j'utilise bien la structure if, puisque la console me renvoit pas ce que j'aimerais.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     b=${m:14:a-28}
     e=`echo $b| cut -d= -f2`
     if test $e=$b;
     then echo -n "Description : "; echo $e;
     fi
    moi j'aimerais que dans ma variable b qui contient une chaine avec un égal:
    il me le coupe en 2 parties et m'affiche la deuxième partie ($e) juste après Description
    et s'il n'y a pas d'égal, qui ne m'affiche même pas la ligne Description et $e
    alors que là il m'affiche toujours:
    Description : HELP

    alors que $b n'est pas toujours équivalent à $e

    Pouvez-vous me dire où ça ne va pas?
    Merci

  2. #2
    Rédacteur
    Avatar de CedrX
    Inscrit en
    Avril 2007
    Messages
    1 111
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 111
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    b=${m:14:a-28}
    echo $b
    Mon echo $b me revoie une chaîne vide.
    Du coup le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    e=`echo $b| cut -d= -f2`
    sera également une chaîne vide et on aura donc le test $b = $e toujours vrai.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 11
    Par défaut
    en fait, m et a sont des variables $m est une chaine de caractère et $a est la longueur de cette chaine.
    Donc peut-être que puisque vous avez pas ces variables il renvoi 0 mais moi $b est équivalent à quelque chose comme moi=toi c'est à dire une chaine avec un égal dedans ou sans égale et là j'aimerai qu'il ne m'affiche pas description.

    peut-être ne suis-je pas assez clair dans mes explications. Désolé.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 11
    Par défaut
    if test moi=toi;
    then echo jaireussi;
    fi

    la console m'affiche jai reussi
    et si je met:

    if test moi=moi;
    then echo jaireussi;
    fi

    la console m'affiche aussi j'ai reussi

    Donc la même sans variable, on voti que la structure n'est pas la bonne... mais à quel endroit ?

  5. #5
    Rédacteur
    Avatar de CedrX
    Inscrit en
    Avril 2007
    Messages
    1 111
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 111
    Par défaut
    Bon je sais d'où vient ton problème.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    b=${m:14:a-28}
    e=`echo $b| cut -d= -f2`
    if test $e = $b
    then echo -n "Description : "; echo $e;
    fi
    dans le test il faut un espace entre $e et le = ainsi que entre le = et le $b
    Autre petit détail le test n'est pas bon.
    Parce que si b="moi=toi"
    alors après application du cut ---> e = "toi"
    Et pour pouvoir afficher le contenu de e il faut que tu testes cette condition
    $e != $b

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 11
    Par défaut MERCI
    Et le MIRACLE FÛT !!!!
    c'était tout bête en fin de compte
    Merci beaucoup !

  7. #7
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 963
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 963
    Par défaut
    Citation Envoyé par efelant Voir le message
    en fait, m et a sont des variables $m est une chaine de caractère et $a est la longueur de cette chaine.
    Donc peut-être que puisque vous avez pas ces variables il renvoi 0 mais moi $b est équivalent à quelque chose comme moi=toi c'est à dire une chaine avec un égal dedans ou sans égale et là j'aimerai qu'il ne m'affiche pas description.

    peut-être ne suis-je pas assez clair dans mes explications. Désolé.
    soit m contient quelque chose comme : "VAR=VALUE" ?
    alors
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    varname=${m%=*}
    value=${m##*=}

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 11
    Par défaut
    C'est ce qu'il me mette si je tape ce que vous m'avez dit.

    ./afficherEvenement.sh: line 11: unexpected EOF while looking for matching ``'
    ./afficherEvenement.sh: line 18: syntax error: unexpected end of file

    En fait, j'arrive à couper comme je veux ma chaine c'est à dire par exemple la chaine initiale toi=moi va devenir 2 chaines une moi et une autre toi.
    Cependant après je n'arrive pas a dire
    si moi=toi => afficher Description
    sinon ne pas afficher.

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

Discussions similaires

  1. [CR XI] Aide sur IF..THEN..
    Par dimah77 dans le forum Formules
    Réponses: 1
    Dernier message: 04/08/2009, 11h29
  2. [Conseils/Aide] Structure de mon premier programme
    Par Invité2 dans le forum Débuter
    Réponses: 44
    Dernier message: 13/09/2008, 14h08
  3. [Aide] Structure de ma base
    Par Gecko972 dans le forum Requêtes
    Réponses: 0
    Dernier message: 12/12/2007, 19h23
  4. Structure if then else
    Par byloute dans le forum Linux
    Réponses: 13
    Dernier message: 04/10/2005, 08h36
  5. [TagLib] Structure if then else
    Par mush_H dans le forum Taglibs
    Réponses: 5
    Dernier message: 19/07/2005, 15h31

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