(KSH) Traitement en fct du contenu d'une var
jmpaunix
-
zipe31 Messages postés 34620 Date d'inscription Statut Contributeur Dernière intervention -
zipe31 Messages postés 34620 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour à tous,
Je rencontre un nouveau type de problème, bien que j'ai 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 HTLM.
Maintenant j'ai 4 maquette de mail HTLM. 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 :
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,
Je rencontre un nouveau type de problème, bien que j'ai 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 HTLM.
Maintenant j'ai 4 maquette de mail HTLM. 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 :
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,
3 réponses
-
Salut,
Un petit exemple devrait t'aider à finaliser ton script...
$ cat foo.sh #! /bin/bash read -p "Entrez A, B, C, A B ou rien : " NAME case "x ${NAME}" in "x A"|"x A B") echo "Vous avez tapé : $NAME" ;; "x B") echo "Vous avez tapé : $NAME" ;; "x C") echo "Vous avez tapé : $NAME" ;; "x ") echo "Vous n'avez rien tapé." ;; *) echo "Erreur" ;; esac $ ./foo.sh Entrez A, B, C, A B ou rien : B C Erreur $ ./foo.sh Entrez A, B, C, A B ou rien : A B Vous avez tapé : A B $ ./foo.sh Entrez A, B, C, A B ou rien : A Vous avez tapé : A $ ./foo.sh Entrez A, B, C, A B ou rien : Vous n'avez rien tapé. $
;-))
-
-
Par contre comment je peux reecrire :
case "x ${NAME}" in
"x A"|"x A B") echo "Vous avez tapé : $NAME"
avec "x A B" = "x A (n'importe quoi)
car "x A B"="x A C"="x A D"="x A B D C"=...="x A Z Z Z"
En fait j'aimerais vraiment isolé la lettre apres le x