Am Donnerstag, 14. August 2008 09:40:34 schrieb Günter Ohmer:
Hallo Liste,
warum funktioniert folgendes Skript nicht:
i=1 /usr/bin/cinternet -I | while read LINE; DSL[i++]=$LINE; done
mit: basar:/etc/ppp # cinternet -I 01 i dsl1 02 a dsl2
Ergebnis: basar:/etc/ppp #echo ${DSL[1]}
basar:/etc/ppp #echo ${DSL[2]}
1. Weil syntaktisch falsch while read LINE; do DSL[$((i++))]=$LINE; done; 2. man bash: Each command in a pipeline is executed as a separate process (i.e., in a subshell). Probier mal (hier wird keine Pipe benutzt) i=1; while read LINE; do echo $((i++)); done < EINE_DATEI ; echo danach i = $i; Hier wird danach der "erwartete" Wert ausgegeben. Lösung also: TF=/tmp/foo.$$ /usr/bin/cinternet -I > $TF while read LINE; do DSL[$((i++))]=$LINE; done < $TF Bye Jürgen -- Dr.rer.nat. Juergen Vollmer, Viktoriastrasse 15, D-76133 Karlsruhe Tel: +49(721) 92 04 87 1 Fax: +49(721) 92 04 87 2 Juergen.Vollmer@informatik-vollmer.de www.informatik-vollmer.de Internet-Telefonie: www.skype.com Benutzer: juergen.vollmer