Variable in Subshell global deklarieren

G

gruenpflanze

Mitglied
Hallo!
mit untenstehendem code wird eine subshell geöffnet, in der dann die while-schleife ausgeführt wird. Die variable $i brauch ich nachher aber noch, leider hat sie, sobald sie die schleife und somit die subshell verlassen hat,wieder den ausgangswert. wie kann ich das ändern?
liebste grüsse,
pascal

PHP:
        i=0
        cat $FILE | while read line;
        do
		echo $i
		b=`echo ${line} | awk '{ print $1 }'`
		ifconfig -a | grep  $b
                if [ $? -eq 0 ]
                then
                	mandant_no=`echo ${line} | awk '{ print $2 }'`
			echo $mandant_no
			i=`expr $i \+ 1`
			echo "i in schleife: $i" #GIBT etwas >0
		fi
	done
	echo "i ausserhalb schleife: $i"   #GIBT 0
Ich möchte, dass der Wert von i ausserhalb der schleife den gleichen hat wie bei der letzten schleifendurchführung.

vielen dank für eure hilfe!
liebe grüsse
 
Über dieses Problem bin ich auch schon ein paarmal gestolpert. Schau dir mal das an, da hats zwei Lösungsvorschläge: http://www.cboltz.de/de/linux/bash/
Klappt wunderbar...
Bin jedoch an weiteren Lösungen schwer interessiert ;)
Gruss
d22
 
Schon mal probiert, statt
Code:
cat $FILE | while read line;
...
done
einfach
Code:
exec 0<$FILE; while read line;
...
done
oder, wenn man STDIN noch braucht, sowas wie
Code:
exec 3<$FILE; while read line <&3;
...
done
exec 3<&-
zu verwenden? Dann sollte der Code innerhalb der Schleife nämlich im Kontext der aktuellen Shell ausgeführt werden, so daß der Wert der Variablen, die innerhalb der Loop verändert wird, auch danach noch verfügbar ist ...

Gruss, ...
 

Ähnliche Themen

Shell Skript beschleunigen

Keine grafische Oberfläche (Debian Installation)

HandbrakeCLI Shell Skript

Wie komme ich an den Inhalt des Inhalts einer Variable?

Sed: Bestimmtes Feld einer "Zeile mit mehreren Feldern" ergänzen

Zurück
Oben