Hallo, On Tue, 05 Feb 2002, Bernd Brodesser wrote:
* David Haller schrieb am 05.Feb.2002:
Alternativ, eigentlich besser ist es, folgendes zu machen:
OLDIFS="$IFS"; IFS="<was auch immer>"; Befehle; IFS="$OLDIFS"
So ein Vorgehen ist immer besser, nicht nur bei IFS. Wenn man etwas den Pfad umsetzt, dann nimmt man:
OLDPATH=$PATH; PATH=<was auch immer> ... PATH=$OLDPATH
denn es könnte ja sein, daß der Pfad schon umgesetzt gewesen ist.
Ack. In der interaktiven shell sollte man's also vorher pruefen, am besten aber gleich in einer Subshell. Also z.B: ( test -z "$OLDIFS" && { OLDIFS="$IFS"; IFS=":"; for p in $PATH; do echo "'$p'"; done; IFS="$OLDIFS" } || exit 1 ) Analog fuer andere Variablen... OLDIFS und OIFS scheinen aber meist nicht gesetzt zu sein, man muss halt vorher nachschauen, z.B. mittels set | grep 'OLDPATH'
Allerdings braucht man eine Variable nicht zurücksetzen, wenn das Skript so wie so zu Ende ist. Auf die aufrufende Shell hat dies, wie alle andere Variable auch, keine Auswirkung.
ACK :)) -dnh, der immer noch staendig neue "Tricks" und/oder "Anwendungen" der bash entdeckt :)) -- Apple's original usability studies contradicted the Xerox ones. The difference? Xerox studied people who were used to the idea of computers and user interfaces. Apple studied random lusers." -- Peter da Silva