On Wed, Jul 13, 2005 at 06:44:24PM +0200, Mart Frauenlob wrote: > Das Script hab ich hier hochgeladen: > http://www.jeah.net/~x-link/ifarray > > Kann es sein, daß ich Variablen innerhalb eines 'while' Loops nicht > permanent bearbeiten kann?
Die Schleife faengt so an: > $IP addr show ${iface} | $GREP -w inet | while read data; do Problem ist hier, dass eine Pipe eine Subshell oeffnet. Das Problem hat jetzt nicht unbedingt was mit der while-Schleife zu tun. Hier etwas anschaulicher: echo a | read a echo $a Man wuerde "a" als Ausgabe erwarten. Stattdessen bekommt man nur eine Leerzeile zu sehen. Die Variable "a" wird in einer Subshell gesetzt. Wenn sich diese beendet (wenn die Pipe geschlossen wird), ist auch die Variable weg. Da ich Bash nicht kann, sonder nur sh, hier ein haesslicher Workaround (In Bash gehts bestimmt schoener, und ohne named pipe): fifo=/tmp/myfifo mkfifo $fifo # Fehlerbehandlung bitte dazu denken echo a > $fifo & read a < $fifo echo $a rm $fifo Im Falle der while-Schleife also: mkfifo $fifo $IP addr show ${iface} | $GREP -w inet > /tmp/myfifo & while read data; do # ... done < $fifo rm $fifo Hier wird die Whileschleife nicht in einer Subshell ausgefuehrt, sondern der Teil vor der Pipe. bye, Gerhard -- Haeufig gestellte Fragen und Antworten (FAQ): http://www.de.debian.org/debian-user-german-FAQ/ Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED] mit dem Subject "unsubscribe". Probleme? Mail an [EMAIL PROTECTED] (engl)