Newsgroup: it.comp.os.linux.sys
Titolo: piccolo shell script ... e adesso m'e' venuto il mal di testa

ciao a tutti.
mi spiego subito:
si tratta di invio di file in allegato.
premessa: in precedenza usavo uuencode ma avevo problemi con alcuni
client di posta (es.: prima versione outlook97) e siccome alcuni client
sono in spagna o comunque all'estero e non so nemmeno chi li riceve devo
cambiare in MIME.
1) ho trova un programmino che si chiama "email", che si usa da linea di
comando, spedisce mail e unisce allegati in formato MIME!
L'opzione che interessa la nostra discussione e':
email  --attach file1,file2,file3,file.... (ometto il resto delle opzioni
che ci rega nulla) NOTA BENE: i nomi dei file _non_ devono essere
separati da spazi e devono essere uniti.
2) collego in NFS una dir di AS400 e prendo tot. file ascii, li trasformo
in PDF e li invio in allegato. Prendo dall'AS400 anche un file dove sono
associati i nomi dei file da inviare e gli utenti che devono riceverli.
3) la situazione e' quindi questa:
ESEMPIO ->
in linux ho una home dir /home/as400 con dentro i file *005.pdf che devono
essere inviati a paperino@paperopoli e io devo creare il file EMAILCORR
con tutte le direttive necessarie ad inviare il file.
premesso che:
email -s `ls /home/as400/*005.pdf` non funziona
so bene che potrei fare un ciclo "for" ma questo vuol dire inviare una
mail per ogni allegato e non mi piace
insomma: quello che devo riuscire a fare, e' avere i nome dei singoli
file uno appresso all'altro separati da virgola --> file1,file2,file3...
--
Massimiliano.

 file uno appresso all'altro separati da virgola --> file1,file2,file3...
Io lo so risolvere con il Perl, ma non so se a te va bene...
#!/usr/bin/perl
@filedaspedire = glob("/home/as400/*005.pdf");
$stringa = "";
foreach $xxx (@filedaspedire)
{
# Togli i rem se non vuoi i percorsi dei singoli file
#    $xxx =~ /^.+\/(.+)$/;
#    $xxx = $1;
    $stringa = $stringa . $xxx . ",";
}
# Tolgo l'ultima virgola.
chop($stringa);
# Se il risultato e' quello voluto, cancella la prossima
# riga e togli il rem dalla successiva.
print "email -s $stringa\n";
#$x = `email -s $stringa`

 file uno appresso all'altro separati da virgola --> file1,file2,file3...
for FILE in *.pdf ; do echo -n $FILE >> list.txt; done
cat list.txt
man echo per ulteriori info
Davide

 Massimiliano.
 
--
sempre io.



funziona in parte (ottengo tutti i file ammucchiati senza il separatore
che volevo) e devo ancora manipolare.
ho trovato anche io una soluzione in un unico passaggio (vedi anche il mio
mex.)
--
Massimiliano

 sempre io.
 
--
di nuovo io

 #!/usr/bin/perl
minchia, mi alzo subito in piedi!! Ma non mi fare spaventare cosi':D
--
Massimiliano

file uno appresso all'altro separati da virgola --> file1,file2,file3...
vediamo un po'...
--------------------
#!/bin/sh
x=`ls *005.pdf`
arg=""
for i in $x
do
  $arg="${arg}{$i},"
done
# Tolgo l'ultima virgola aggiunta
arg=`echo "$arg" | sed 's/,$//'`
# in $arg c'e' la lista file separati da virgola senza spazi
--------------------
uhm... a occhio dovremmo esserci	

 email -s `ls /home/as400/*005.pdf` non funziona
email -s `echo /home/as400/*005.pdf | tr ' ' ,`



ok, sei un grande.
dal perl, a 40 righe di shell script alla mia riga un po' lunghetta per
arrivare alla tua "sintesi". ;)
--
Massimiliano

 email -s `ls /home/as400/*005.pdf` non funziona
Pero` questo dovrebbe funzionare:
email -s "`echo /home/as400/*005.pdf`"
bye,
-- 
   Piergiorgio Sartor

 email -s "`echo /home/as400/*005.pdf`"
Ti piaceva vero?
chi prova con il perl, chi in modi un po' bislacchi, arrivi tu e pretendi
di risolvere cosi' ;)
Leggiti il mio messaggio: nomi di file in sequenza, separati da virgole e
senza spazi tra loro!
La soluzione "giusta" e' quella di Mirra (e poi la mia, modestia a
parte)
--
Massimiliano

 senza spazi tra loro!
Allora perche` mi vieni a scrivere che:
email -s `ls /home/as400/*005.pdf`
non funziona?
Ovvio che non funziona, dove sono le virgole?
bye,
-- 
piergiorgio