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 10/10/2007, 21h51   #1
Membre habitué
 
Inscription : mars 2006
Messages : 111
Détails du profil
Informations personnelles :
Âge : 49
Localisation : France

Informations forums :
Inscription : mars 2006
Messages : 111
Points : 116
Points : 116
Par défaut 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
frederic_s est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/10/2007, 22h47   #2
Membre expérimenté
 
Avatar de BlaireauOne
 
Inscription : mars 2007
Messages : 469
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : mars 2007
Messages : 469
Points : 576
Points : 576
Je pense que ça doit répondre à ton besoin

Code :
1
2
cat mail.tmp | mailx -s "Le fichier joint" "$(eval echo \$${DestMail})"
__________________
Loi de Murphy:
La Théorie c'est quand ça ne marche pas mais que l'on sait pourquoi.
La Pratique c'est quand ça marche mais qu'on ne sait pas pourquoi.
Quand la théorie rejoint la pratique ça ne marche pas et on ne sait pas pourquoi.
BlaireauOne est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/10/2007, 14h06   #3
Membre habitué
 
Inscription : mars 2006
Messages : 111
Détails du profil
Informations personnelles :
Âge : 49
Localisation : France

Informations forums :
Inscription : mars 2006
Messages : 111
Points : 116
Points : 116
Bonjour


Merci pour ton aide

J'y étais presque puisque je tentais avec EVAL mais je l'utilisais mal.


Merci encore

Frédéric
frederic_s est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h36.


 
 
 
 
Partenaires

Hébergement Web