PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : bash: "export" aus while-Schleife



kamome
01-03-2004, 15:24
Hi, in einem script veraendere ich innerhalb einer while-Schleife eine Variable ($pntcnt), die als index fuer arrays dient. Nun muss ich aber auch ausserhalb der Schleife auf diese Variable zugreifen - wie man sieht gibt es da ein Problem, der Wert der Variablen betraegt wieder 0 (script und output jeweils letzte Zeile)... warum? Laeuft eine Schleife in einer subshell? Und wie komme ich dann an die Variable ran? Muss ich ueber eine text-Datei exportieren?

das script:


#/bin/bash

declare -a xarr
declare -a yarr

pntcnt=0
cat data |while read x y
do
let "pntcnt += 1"
xarr[${pntcnt}]=${x}
echo -n x[${pntcnt}]=${xarr[pntcnt]}" "
yarr[${pntcnt}]=${y}
echo y[${pntcnt}]=${yarr[pntcnt]}
done

echo ${pntcnt}

output:


x[1]=89 y[1]=58
x[2]=91 y[2]=45
x[3]=78 y[3]=100
x[4]=54 y[4]=103
0

(mit einem export innerhalb der Schleife klappt es auch nicht - daher meine Vermutung mit der subshell; mit "source arrtst" erhalte ich den gleichen output)

Kann mir jemand weiterhelfen?
Vielen Dank im Voraus

cu
kamome

peschmae
01-03-2004, 17:50
Die Schleife läuft wegen der Pipe in ner Subshell.

Lösung:


while read x y <test.txt; do
echo $x - $y;
done


geht nicht. k.A. wieso.



while read x y; do
echo $x - $y;
done <test.txt

geht :)


Siehe auch ABS-Guide http://www.tldp.org/LDP/abs/html/internal.html#READR
Example 11-6.


MfG Peschmä

kamome
02-03-2004, 01:33
Perfekt!
Vielen Dank Peschmae!

cu
kamome