From: Michael Lestinsky (michael_at_choin.net)
Date: 23. Jan 2001
Am 23.01.'01 schrieb Raphael H. Becker:
> Christian Weisgerber wrote:
> > Raphael H. Becker <beckerra_at_rumms.uni-mannheim.de> wrote:
> > > Umstaendlich koennte man das so machen:
> > > if [ $1 ]
> >
> > Das fliegt dir sehr leicht um die Ohren. Besser
> >
> > [ "$1" ]
>
> Aus welchem Grund? Ist $1 ungesetzt, dann fuehrt /bin/sh den Befehl "[
> ]" aus. Das Verhalten ist die Rueckgabe eines "false"-Wertes. Oder? Wo
> ist der Haken?
Der Haken kommt erst bei "komplizierteren" Dingen wie z.B.:
[ $x = "bla" ]
Ist $x jetzt leer, dann wird daraus nach der Variablenexpansion ein
[ = "bla" ]
und das gibt dann einen Syntax-Fehler, denn dieser Ausdruck wird erst
nach der Variablenexpansion ausgefuehrt:
[: =: unary operator expected
Wenn man jetzt Anfuehrungszeichen drum herum setzt:
$ [ "$x" = "bla" ]
$ echo $?
1
$ echo $x
$
Dann passiert das, was du eigentlich vorhast. Dann wird aus "$x" nach
Variablen-Expansion ein Leerstring und du hast einen Vergleich von 2
Strings und keinen Sytax-Fehler.
Bye
Michael
-- Michael Lestinsky Mobil: +49 177 3017893 ml_at_choin.net Office: +49 621 7288-112 CHOIN! HCT GmbH Fax: +49 621 720797-99 Ein Unternehmen der ISION Internet AG
Dieses Archiv wurde generiert von hypermail 2.1.2 : 11. Mar 2002 CET