 |
Deckard |
.illuminato.

Registered: Sep 2008
Posts: 242 (0.04 al dì)
Location: ~
Corso: Info
Anno: primo
Time Online: 3 Days, 17:53:20 [...]
Status: Offline
Edit | Report | IP: Logged |
Originally posted by -Oblivion-
In pratica (testato e ritestato) tutte le variabile utilizzate nel ciclo while, non vanno a sovrascrivere quelle fuori dal ciclo! E' assurdo.
Questo invece non avviene nei cicli for. Perchpè? Avete riscontrato anche voi?
Non è assurdo: ciò avviene perchè il while è in pipe con un altro comando; il while è un costrutto built-in, che viene eseguito all'interno dello stesso processo della shell. Tuttavia la pipe è un meccanismo di comunicazione tra processi e di conseguenza la shell deve fare eseguire il while su di un altro processo figlio di quello principale. Perciò le modifiche apportate ad una variabile all'interno del ciclo saranno visibili solo all'interno di esso.
Per aggirare ciò basta far stampare il valore delle variabile dallo stesso processo del while. Ciò è possibile racchiudendo tra parentesi tonde il while e la stampa della variabile. In questo modo:
PHP:
#!/bin/sh
pippo="topolino"
cat file.txt | (while read I
do
pippo = "cane"
echo $pippo
done
echo $pippo)
__________________
And all those moments will be lost in time, like tears in rain...
|