Hi, On Thu, 14 Aug 2003, Jan Trippler wrote:
4. geschickte Ausweitung der Subshell ;-)
echo -e "a\nb\nc\nd" | { # ^----- hier startet die Subshell
Keine subshell, sondern ein command group. Insbesondere wird diese group im Environment der aktuellen Shell ausgewertet. D.h. nach % ( bla=1 ) ist $bla nicht gesetzt (da nur in subshell veraendert, die schon wieder zu Ende ist, nach % { bla=1; } ist $bla gesetzt.
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.
Siehe unten.
zaehler=$(($zaehler+1)) - und das ohne Subshell ;-) Eine weitere Variante ohne Subshell wäre let zaehler=$zaehler+1
AFAIK alles bash-spezifisch.
Falsch. Arithmetic expansion ist POSIX. Nur Solaris /bin/sh und ash (welche beide nicht POSIX konform sind) haben das nicht. Ciao, Micha.