Envoi de mail avec pièces jointes multiples [Résolu/Fermé]

Signaler
-
 volimp -
Bonjour tlm,

JE suis entrain de faire du nouveau du shell après 4 ans et je bloque sur une commande.

But de mon Script : envoyer un mail en attachant tous les fichiers csv contrenus dans un repertoire donné.


Code :
#preparing the send mails comand
for i in $(find $FILE_DIR | grep csv )
do
SENDC=" "uuencode" "$i" "$i" ; "$SENDC
done

#fixing the Subject of the mail
SUBJECT=$(basename $i)



#Sending the mail

FINAL_COMAND="( "$SENDC" ) | mail -s "$SUBJECT" "$TO

$FINAL_COMAND
echo $FINAL_COMAND
en lançant le script j'obtient cette erreur :

( uuencode /HDisclosure/files/POSITIONS.csv /home/HDisclosure/files/POSITIONS.csv ; uuencode /HDisclosure/files/POSITIONS1.csv /home/HDisclosure/files/POSITIONS1.csv ) | mail -s POSITIONS me@mail.com

./Hdc_sendMail.ksh[43]: (: introuvable.

je pense que ça provient du ";"

Lorsque je fais un copier coller de la commande dans le terminal ça envoi le mail par contre le script retourne l'erreur ci-dessus.

Merci pour votre aide.

1 réponse

Messages postés
18240
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
30 novembre 2020
5 210
hello
en simplifiant
for i in $(find $FILE_DIR | grep csv ) 
do 
        uuencode $i $i 
done | mail -s "$(basename $i)" "$TO" 

ou
SENDC=""
for i in $(find $FILE_DIR | grep csv )
do
        SENDC="uuencode $i $i ; $SENDC"
done 

#fixing the Subject of the mail
SUBJECT=$(basename $i)

#Sending the mail

FINAL_COMAND="($SENDC )| mail -s \"$SUBJECT\" $TO"

echo $FINAL_COMAND
$FINAL_COMAND
j'ai cette erreur

' imprévu.Mail.ksh[19]: 0403-057 Erreur de syntaxe. ligne 21 : 'do


sinon je pense que la syntaxe pour utiliser uuencode est la suivante dans ce cas :

( uuencode file1 file1 ; uuencode file2 file2 ) | mail -s "$(basename $i)" "$TO"
Messages postés
18240
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
30 novembre 2020
5 210
- affiche les lignes avant et après 19
- la boucle for remplace les () et uuencode chaque fichier et pipe le tout dans le mail
le problème provenait d'un caractère non imprimable ^M :))

sinon je m'en sors avec une autre approche

for i in $(find $FILE_DIR | grep csv )
do
echo "handling the file " $(basename $i)
echo
uuencode $i $i >> PJ.tmp

done

mail -s "$(basename $i)" -c $CC $TO < PJ.tmp



Merci dubeck