PDA

Visualizza la versione completa : [bash] variabile in un ciclo


Sifr
30-07-2007, 14:44
ciao,
sto cercando di imparare a scrivere qualche script in bash, ho questo blocco di codice:




messaggio="abcde"

if [ $num -gt 0 ]; then

(IFS='
';
for riga in $(/bin/cat $file); do
messaggio=$messaggio$riga" "
echo $messaggio ####funge
done
)
echo $messaggio ####non funge



praticamente il primo echo funziona, ovvero ad ogni ripetizione del ciclo ottengo la stringa "messaggio" concatenata con la riga del $file. All'ultima iterazione avrò:

messaggioriga1 riga2 riga3 riga4 riga... rigan

Il secondo echo, invece, mi visualizza solo il contenuto originale di "messaggio", ovvero abcde in questo caso.

Si tratta di problemi dovuti all'ambito diverso? Che posso fare?

wolf64
30-07-2007, 15:29
Devi togliere le parentesi tonde, con quelle crei una subshell, perciò la variabile "messaggio" al loro interno sarà una variabile locale a quest'ultima! ;)

wolf64
30-07-2007, 15:31
PS: ti do il link ad una buona guida, tradotta in italiano se preferisci:
http://www.pluto.it/ildp/guide/abs.html

Sifr
30-07-2007, 15:38
denghiù :D

ora funge

Loading