Envoi de mail avec pièces jointes multiples

Résolu
volimp -  
 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

  1. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    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
    
    0
    1. volimp
       
      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"
      0
    2. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
       
      - affiche les lignes avant et après 19
      - la boucle for remplace les () et uuencode chaque fichier et pipe le tout dans le mail
      0
    3. volimp
       
      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
      0