Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 15/03/2011, 13h36   #1
Invité régulier
 
Inscription : juillet 2010
Messages : 44
Détails du profil
Informations forums :
Inscription : juillet 2010
Messages : 44
Points : 5
Points : 5
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 :
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,
Graineur est déconnecté   Envoyer un message privé Réponse avec citation 02
Vieux 15/03/2011, 15h12   #2
Invité régulier
 
Inscription : juillet 2010
Messages : 44
Détails du profil
Informations forums :
Inscription : juillet 2010
Messages : 44
Points : 5
Points : 5
J'ai utilisé un petit code trouvé sur internet :

Code :
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 ...
Graineur est déconnecté   Envoyer un message privé Réponse avec citation 02
Vieux 15/03/2011, 17h11   #3
Invité régulier
 
Inscription : juillet 2010
Messages : 44
Détails du profil
Informations forums :
Inscription : juillet 2010
Messages : 44
Points : 5
Points : 5
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 :
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
Graineur est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h24.


 
 
 
 
Partenaires

Hébergement Web