Ciao Alessio, se me lo permetti faccio alcuni commenti allo script. Così magari ne nasce una discussione utile per tutti.
Ho aggiunto dei commenti subito prima delle righe alle quali si applicano. In genere io utilizzo lo shebang nella forma che inibisce l'invocazione con altri argomenti interpretabili dalla shell, cioè con il «--» dopo il comando: #! /bin/bash -- > #!/bin/bash queste, che sono costanti, puoi dichiararle tali aggiungendo «readonly» in modo da non cambiarle, successivamente, per sbaglio: readonly WORKINGDIR=/tmp > WORKINGDIR="/tmp/" > STORICO="/data/medici" > HOST='xxx.yyy.zzz.ttt' > USER='utente' > PASSWD='passsssssssssword' > > #mi sposto nella cartella di lavoro/salvataggio dei file generati > cd $WORKINGDIR le righe successive, se non ho capito male cercano di capire se ci sono dei file che hanno nome che inizia per «048033» e le mettono in un array. In realtà, sotto, non interessa quali siano i nomi dei file, ma solo se ne esistano o meno. Il ciclo dovrebbe popolare una variabile array, ma in realtà mette tutti i nomi nella posizione 0 dell'array poiché hai utilizzato la variabile «i» come indice anziché «I». > declare -a arr > I=0 > > for file in $( ls 048033* ) ; do > if [ -s $file ]; then > arr[i]=$file > fi > I=$((I + 1)) > done > > ELEMENTS=${#arr[@]}; Il ciclo superiore non l'avrei fatto e avrei scritto così, ma sono abbastanza convinto che esistano metodi più veloci: ELEMENTS=0 [ $(echo 048033*) != '048033*' ] && ELEMENTS=1 Tra l'altr, se non si utilizzano gli array, puoi anche evitare di usare la bash e usare la dash, che in questo caso potrebbe essere più veloce. Nella parte sotto, a parte lo «here document» indentato, c'è il problema della password che è messa in chiaro nello script. Forse sarebbe possibile sfruttare file di configurazione di ftp, come il .netrc usato da ncftp, per evitare di inserire qui la password. Invece tu hai utilizzato il «-n» proprio per disabilitare il login automatico. Come mai? > if [ $ELEMENTS -gt 0 ]; then > ftp -nv $HOST << CMD_SCRIPT > user $USER $PASSWD > ascii > prompt > mput 048033*.txt > bye > CMD_SCRIPT > fi Questo, combinato con il procedente controllo, potrebbe diventare: if [ $(echo 048033*) != '048033*' ]; then ftp -nv $HOST << CMD_SCRIPT user $USER $PASSWD ascii prompt mput 048033*.txt bye CMD_SCRIPT fi Ciao, Giuseppe -- Per REVOCARE l'iscrizione alla lista, inviare un email a debian-italian-requ...@lists.debian.org con oggetto "unsubscribe". Per problemi inviare un email in INGLESE a listmas...@lists.debian.org To UNSUBSCRIBE, email to debian-italian-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/1328689815.28882.16.camel@scarafaggio