(KSH) Traitement en fct du contenu d'une var

Fermé
jmpaunix - 15 mars 2011 à 13:56
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 - 15 mars 2011 à 14:43
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,

3 réponses

zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 417
15 mars 2011 à 14:22
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é.

$

;-))
0
ah ok je vais essayé avec ca merci :))
0
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
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 417
15 mars 2011 à 14:43
case "x ${NAME}" in
        "x A"*) echo "Vous avez tapé : $NAME"
        ;;
0