Interpréter une variable contenue dans un fichier texte
Bonjour
J'espère bien me faire comprendre car cela n'est pas évident d'expliquer mon problème.
Pour industrialiser des traitements d'envoi de mail, j'utilise un script sous Aix.
J'ai créé un fichier contenant le nom des fichiers à mailler ainsi que le nom de la variable (contenu dans le .profile) indiquant les destinataires.
fichier .profile:
Code:
1 2 3 4
|
export MEL1=toto@fai.fr
export MEL2=titi@fai.fr
export MEL3=tutu@fai.fr,tata@fait.fr |
fichier MAIL.txt
Code:
1 2 3 4
|
fichier1;nom_variable_MEL1
fichier2;nom_variable_MEL2
fichier3;nom_variable_MEL3 |
scripts EnvoiMail.sh
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
while read LigneEnvoi
do
FichierAttache=`echo ${LigneEnvoi} | cut -d ";" -f 1`
DestMail=`echo ${LigneEnvoi} | cut -d ";" -f 2`
# envoi du mail ...
cat <<FINMSG>mail.tmp
Bonjour,
Veuillez trouver le fichier joint
Cordialement
FINMSG
uuencode ${FichierAttache} "${FichierAttache}" >> mail.tmp
# Envoi du mail avec le fichier joint
cat mail.tmp | mailx -s "Le fichier joint" "${DestMail}"
done < MAIL.txt |
J'aimerais savoir quoi mettre exactement dans MAIL.txt :
${MELx} ou MELx ou {MELx} ....
et comment dire au script que la valeur contenue dans DestMail correspond à un nom d'une variable du .profile et dont de mettre dans DestMail la valeur de $MELx
Pour l'instant, j'ai résolu mon probleme en mettant un case de la manière suivante:
Dans le fichier MAIL.txt, je mets MEL1, MEL2 ou MEL3
et dans le script:
Code:
1 2 3 4 5 6 7
|
case ${DestMail}
MEL1) DestMail=${MEL1}
MEL2) DestMail=${MEL2}
MEL3) DestMail=${MEL3}
*) echo 'MEL INCONNU'
esac |
Mais cela n'est pas propre. Je sais qu'il est possible de faire ce que je souhaite. Je l'ai déjà fait il y plusieurs années mais impossible de me rappeler comment j'ai fait
Merci pour toute l'aide apportée.
Frédéric S