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 :

Traitement en fonction du contenu d'une variable


Sujet :

Shell et commandes GNU

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 51
    Points : 25
    Points
    25
    Par défaut Traitement en fonction du contenu d'une variable
    Bonjour à tous,

    Je rencontre un nouveau type de problème, bien que j'aie trouvé une solution un peu lourde palliative.

    Je traite toujours des fichiers XML, via un XSLT je met les infos importantes dans un TXT que j'utilise par la suite pour compléter un HTML.

    Maintenant j'ai 4 maquettes de mail HTML. La "structure" du mail envoyé sera en fonction d'un "processing instruction" dans le XML d'entrée.
    J'ai isolé cette donnée dans une variable $TYPE

    Cependant, en fonction d'elle je dois envoyer le mail 1 2 3 ou 4, ce qui n'est pas si facile car cette fameuse variable TYPE est comme suit :


    1/ Type=x A ( alors on envoie le mail 1)
    2/ Type=x B (alors on envoie le mail 2 )
    3/ Type=x C (alors on envoie le mail 3)
    4/ Type=x (alors on envoie le mail 4)
    5/ Type=x A B ( on envoie le mail 1 uniquement, a vrai dire on prend la première occurrence)

    J'ai procédé par un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if  [ "$TYPE" == "x A" ]
                then  --traitement mail 1--
    Cependant je devrais faire 4 if, et je ne peux pas traiter mon cas spécial 5/
    Je ne sais pas quelle type de boucle je dois utiliser.
    On m'a dit que partir sur un case pourrait m'aider ?

    Merci à tous,

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 51
    Points : 25
    Points
    25
    Par défaut
    J'ai utilisé un petit code trouvé sur internet :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    			echo Decoupage de $TYPE
    			oIFS="$IFS"; IFS=' ' 
    			set -A str $TYPE
    			IFS="$oIFS"
     
    			echo "TYPE comprend  ${#str[@]} code"
    			echo "Premier : ${str[0]}";
    			echo "Second: ${str[1]}";
    			echo "Troisieme : ${str[2]}";
    Avec ça j'ai plus de contrôle sur les éléments qui composent ma variable $TYPE, je continue ...

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 51
    Points : 25
    Points
    25
    Par défaut
    J'ai finalement reussi, alors même si c'est pas vraiment ce qu'on appel du propre ^^

    J'ai des instructions d'envoi de mail suivant les cas.
    Le TYPE correspond au processing instruction prélevé dans les XML.


    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    echo Decoupage de $TYPE
    			oIFS="$IFS"; IFS=' ' 
    			set -A str $TYPE
    			IFS="$oIFS"
    			COMPTEUR=`echo ${#str[@]}`
    			echo "COMPTEUR vaut $COMPTEUR"
    			echo "TYPE comprend  ${#str[@]} code"
    			echo "Premier : ${str[0]}";
    			echo "Second: ${str[1]}";
    			echo "Troisieme : ${str[2]}";
    			echo "Dernier element : ${str[`$COMPTEUR`]}";
    			echo "Creation du compteur"
    			cpt=0
     			 while [ "$COMPTEUR" -gt  "$cpt" ]
    			 do
    			 	echo "Recherche en cours : ${str[`echo $cpt`]}"
    			 case "${str[`echo $cpt`]}" in
     				 A)
      				  echo "Cas 1"
      				  break;
     
     				   ;;
     				 B)
     				   echo "Cas 2"
     			  							break;				   
     				   ;;
     				 C)
      				  echo "Cas 3"
                                      break;
     				   ;;
    			esac
    			 cpt=`expr $cpt + 1`			
     
    			 echo "cpt : $cpt"
     
     			done
    done

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 06/07/2010, 13h22
  2. Contenu d'une variable et paramètres de fonction
    Par antrax2013 dans le forum Langage
    Réponses: 7
    Dernier message: 31/03/2010, 10h58
  3. Réponses: 18
    Dernier message: 27/10/2006, 14h15
  4. Réponses: 3
    Dernier message: 27/07/2005, 15h12
  5. Réponses: 11
    Dernier message: 22/06/2005, 11h04

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