shell script, változó értéke elvész, ha véget ér a ciklus

Üdv!

Adott egy ciklus:

x="semmi"
ls | while read aaa
do
......echo $aaa
......x="valami"
......echo $x
done
echo "x="$x

A ciklus végbemegy, de az x éeréke a ciklusban "valami" lesz, de ciklusból kilépve "semmi". Próbáltam export-olni is, de akkor sem. Viszont, ha a ciklust nem egy program kimenete vezérli, akkor helyesen műxik:

i=0
x="semmi"
while [ $i -lt 3 ]
do
......i=`expr $i + 1`
......x="valami"
done
echo "x="$x

Hozzászólások

x=123 ; echo $x ; ls | { while read a ; do x=$a ; done ; echo $x;}

de az 'ls |' helyett inkabb 'for i in *' es nem is all fenn a problema