On Don, 30 Aug 2001, Michael Hoeller wrote:
ich versuch eine simple Rechung aber irgendwie klappt's nicht ganz. Weis jemand warum der Fehler kommt?
LEVEL=2 echo $LEVEL $[LEVEL+=1] echo $LEVEL
:/tmp # edate 2 ./edate: 3: command not found 3
Das Konstrukt $[] und $(( )) ist kein Befehl, sondern wir wird expandiert, _bevor_ die Zeile ausgefuehrt wird. Nun ist ja das Ergebnis der Expandierung == 3, d.h. die bash versucht nun das Ergebnis der Expandierung auszufuehren, denn sonst wuerde ja z.B. ein: echo $[LEVEL+=1] nicht 3 sondern eine leere Zeile ergeben. Loesung: LEVEL=2 echo $LEVEL echo $[LEVEL+=1] oder du verwendest den "leeren" Befehl ':' LEVEL=2 echo $LEVEL : $[LEVEL +=1] echo $LEVEL Weiters kannst du natuerlich auch eine andere Schreibweise verwenden: LEVEL=2 echo $LEVEL LEVEL=$[LEVEL+1] echo $LEVEL Das gilt uebrigens genauso fuer alle anderen Expandierungen, insbesondere den vielen ${} Varianten. -dnh -- ... just what are we going to say to an alien race if we make contact? "Do you have Napster?" "Can we borrow one of your rainforests?" "Stop making crop circles!" -- Scott Barber, in rasfw