Buon giorno a tutta la lista. Ripropongo il problema di qualche settimana fa (oggetto precedente "problema bash passaggio parametri").
Il problema fondamentalmente rimane lo stesso, ovvero non riesco a passare correttamente dei parametri da uno script ad un'altro. Lo script main.sh legge tramite un ciclo da un file di testo [ while read line; do; ....; ... ; done < file.txt ], e internamente cerca di passare $line ad un altro script [ ./montaggio.sh $line ]. All'interno di file.txt metto, per riga, una serie di valori, con spazi, tra virgole doppie. [ "var1" "var due" "var 3" var4" ] Il punto è che se provo a dare in pasto a montaggio.sh le variabili da riga di comando, come da riga di file.txt, funziona tutto correttamente e mi prende le variabili ( se chiamo da shell ./montaggio.sh "var1" "var due" "var 3" var4" li riesco a prendere correttamente con $1, $2, etc...) , con gli spazi. Se invece cerco di fare la stessa operazione dal main.sh, dando ./montaggio.sh $line , quando montaggio.sh mi prende le variabili se ne frega degli apici e li separa agli spazi. Ulteriore problema è che l'ultima variabile sarà una password, e quindi potrà contenere caratteri particolari. Avrei risolto con un "shift;shift;shift; var4=$*". Tutto il problema l'ho in realtà risolto al momento andando a prendere le variabili una a una dal main.sh, con awk, e ripassandole singolarmente. Avete qualche idea del perchè bash abbia questo comportamento? Sbaglio qualcosa io?O_o De seguito il codice. Grazie mille ancora! Federico ############################################################ main.sh ______________________ #!/bin/bash echo ; echo echo "Test del ciclo while: provo a passare una riga alla volta da file.txt ad un altro script in base al \"caso\"" echo ; echo while read riga do echo "La riga attuale è : $riga , controllo il tipo di backup. " echo ; echo tipo_di_backup=`echo $riga | awk '{print $1}'` echo $tipo_di_backup echo ; echo case $tipo_di_backup in \"01\" ) echo "Richiamare ./backupNetToHd.sh $riga" # tipo_bk=`echo $riga | awk '{print $1}'` # path=`echo $riga | awk '{print $2}'` # var_tar=`echo $riga | awk '{print $3}'` # user=`echo $riga | awk '{print $4}'` # pass=`echo $riga | awk '{print $5}'` # ./backupNetToHd.sh "$tipo_bk" "$path" "$var_tar" "$user" "$pass" # ./backupNetToHd.sh "01" "//192.168.1.100/Zona Comune" "xvzf" "user name" "password" ; ./backupNetToHd.sh $riga ;; \"02\" ) echo "Tipo 02, dovei richiamare ./backupHdToHd.sh \${riga}" ;; * ) echo "tipo non riconosciuto. Linea= ${riga}" ;; esac done < cartelle.txt if [ "$?" -eq "1" ] then echo "Terminato con errori" else echo "Finito - ok" fi exit 0 _____________________ montaggio.sh ______________________ #!/bin/bash echo "-------------------------------------------------------------" echo "--------------------------------------------" var1="$1" var2="$2" var3="$3" shift; shift; shift; var4="$*" echo "Ho settato le variabili var1= "$var1" , var2r= "$var2" , var3= "$var3" , var4= "$var4"" echo "---------------------------------------------" echo "--------------------------------------------------------------" exit 0 ______________________ -- 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/aanlktimtabrjrv+y73sqytrdttu4ue69+l+xsz_g9...@mail.gmail.com