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

Datumsansicht Baumansicht Betreffansicht Attachement-Sicht

From: Raphael H. Becker (beckerra_at_rumms.uni-mannheim.de)
Date: 23. Jan 2001


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?
 
> oder gleich sauber
> [ -n "$1" ]

Na gut, es macht das gleiche ...
 
> Außerdem kann man auf diesem Weg nicht zwischen einem leeren und
> einem überhaupt nicht gesetzten Wert unterscheiden.

Es geht auch eigentlich nur darum festzustellen, ob ueberhaupt ein
Parameter uebergeben wurde. Falls ja, dann ist $1 gesetzt, falls nein,
dann ist $1 entweder ungesetzt oder leer, was hier aber so und so kein
sinnvoller Wert ist.
 
> > VAR=${$1:-"defaultwert"}
>
> Es ist wichtig zwischen einer Variablen (VAR) und ihrem Wert ($VAR)
> zu unterscheiden. Hier wird die Variable selbst gebraucht:
>
> VAR=${1:-"defaultwert"}

Yupp. Das wars. Ist aus der manpage aber nicht unbedingt zu ersehen ...
hier ist nur von "parameter" die Rede, was aus meinem Sprachgefuehl
heraus sowohl $VAR als auch VAR haette heissen koennen. Nunja. Ein
Beispiel ware net so schlecht an dieser Stelle ...
 
Gruss
Raphael

-- 
m(){ if [ $1 -eq 1 ];then echo $2 $3;else m $(($1-1)) $2 $4 $3;m 1 $2 \
$3 $4;m $(($1-1)) $4 $3 $2;fi;};if [ $# -eq 3 ]&&[ $3 -ge 1 -a $1 -le \
3 -a $1 -ge 1 -a $2 -le 3 -a $2 -ge 1 -a $1 -ne $2 ];then m $3 $1 $2 $\
((6-$1-$2)); else echo Usage: /bin/sh hanoi.sh from to num; fi #by rhb


Datumsansicht Baumansicht Betreffansicht Attachement-Sicht

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