PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : bash: Variable trotz Änderung wieder null??



qeldroma
19-04-2006, 14:32
Hallo,

ich kämpfe gerade mit einer Schleife, die eine Variable ändern soll.
Leider hat die Variable außerhalb der Schleife wieder ihren Anfangswert. Warum???

Ich exportiere sie doch?


export result=0
ifconfig eth0|grep "RX bytes"|sed -e "s/.*RX.bytes://" -e "s/\ (.*bytes:/\n/" -e "s/.(.*//"|while read line; do
let "result = $result + $line"
echo $result
done
echo $result

---- Ergebnis: ------------------------------------------------

2861275141
6786962392
0


Wie man sieht, wird $result verändert, jedoch nach der Schleife ist es wieder null? Wie mache ich das denn so, das es klappt?

PS: Lasst euch nicht von dem "sed" verwirren, das filtert nur auf zwei Zeilen getrennt die beiden Werte für "RX/TX bytes" heraus, die dann addiert werden sollen.

Grüße, Florian

ninguno
19-04-2006, 14:37
das hängt imho mit den pipes zusammen, dadurch läuft die schleife in einem child prozess mit eigenem environment. die result variable innerhalb der schleife ist eine andere als die ausserhalb.

qeldroma
19-04-2006, 14:51
das hängt imho mit den pipes zusammen, dadurch läuft die schleife in einem child prozess mit eigenem environment. die result variable innerhalb der schleife ist eine andere als die ausserhalb.

Ok, aber wie kriege ich jetzt den Variablenwert nach "draußen"?

Grüße, Florian

ninguno
19-04-2006, 14:59
eventuell so:
result=$(ifconfig ...|while read line; do; let "result = $result $line"; echo $result ;done)