Re: #!/bin/sh: Variablen-Zuweisung mit Default-Werten

Datumsansicht Baumansicht Betreffansicht Attachement-Sicht

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


Datumsansicht Baumansicht Betreffansicht Attachement-Sicht

Dieses Archiv wurde generiert von hypermail 2.1.2 : 11. Mar 2002 CET