On Don, 14 Aug 2003 at 00:22 (+0200), Christian Boltz wrote: [...]
4. geschickte Ausweitung der Subshell ;-)
Stark verkürztes Beispiel:
#!/bin/bash zaehler=0
echo -e "a\nb\nc\nd" | { # ^----- hier startet die Subshell while read line do zaehler=`expr $zaehler + 1` done
echo Anzahl: $zaehler
exit } # erst hier endet die Subshell!
Jau, die ist auch schick - die fiel mir auf die Schnelle nicht ein.
BTW: Du verwendest Backticks, um die Variable "$zaehler"eins hochzuzählen: zaehler=`expr $zaehler + 1` Das startet ein externes Programm in einer Subshell - wenig performant ;-)
aber portabel.
Genausogut funktioniert die (vermutlich bash-spezifische) Variante zaehler=$(($zaehler+1)) - und das ohne Subshell ;-) Eine weitere Variante ohne Subshell wäre let zaehler=$zaehler+1
AFAIK alles bash-spezifisch. Sowas nehme ich nur dann, wenn es nicht anders geht ;)
Und ich dachte schon, TMTOWTDI gilt nur für Perl ;-)))
Das gilt immer (ausser vielleicht in VB ;) Jan