PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Substitution, Standardwertzuweisung



tobias.vdk
24-08-2005, 09:29
Hallo!

Ich möchte meinem zweiten Paramter einen Standardwert (0) zuweisen, falls er nicht gesetzt ist. Leider funktioniert weder


$2=${2:=0}

noch


$2=${echo ${2:=0}}


Ich bin für jede Hilfe dankbar.

Tschüss Tobias

baumgartner
24-08-2005, 11:16
ich bin zwar kein bash spezi
aber normalerweise darfst du einer spezialvariablen keinen wert zuweisen, denke dass es das auch in bash so ist :)

du kannst aber am anfang var = $2 machen und wenn $2 nix ist ist var=0. im skript verarbeitest du dann halt nur $var

mfg baumi

bitte nicht zu hart sein falls das nicht stimmt ( steht ja in der ersten zeile :) )

tobias.vdk
24-08-2005, 11:25
Hatte ich auch schon versucht, aber leide rnicht geklappt. Trotzdem danke.

$tmp=${2:=0}
bringt "diese Option benötigt ein Argument

$tmp=${echo ${2:=0}}
bringt "bad substitution"

Hintergrund ist, dass ich das in der Funktion verwende

getvalue2 ()
{
$tmp=${2:=0}
case $1 in
$a) cut -d ':' -f `expr $1 + $tmp` ;;
$i) cut -d ' ' -f `expr $1 + $tmp` ;;
esac
}
Wenn man 2 Parameter angibt, dann wird zu $a bzw. $i noch der 2. Parameter hinzuaddiert. Wenn nur ein Parameter angegeben wird, dann wird 0 (nichts) hinzuaddiert.

`kk
24-08-2005, 11:53
Hi,
gehts so vielleicht?



getvalue2 ()
{
tmp=${2:=0}
case $1 in
$a) cut -d ':' -f `expr $1 + $tmp` ;;
$i) cut -d ' ' -f `expr $1 + $tmp` ;;
esac
}
Gruß
Kai

tobias.vdk
24-08-2005, 12:02
das bringt leider folgende Fehlermeldung

./erstellen: line 57: $2: cannot assign in this way

tobias.vdk
25-08-2005, 12:32
So, habe mich erstmal mit einer if-Bedingung geholfen

if [ "$2" ]
then
tmp=$2
else
tmp=0
fi

Vielleicht fällt ja einem noch was ein.

Tschau Tobias

Joghurt
26-08-2005, 13:56
So gehts
tmp=$2
: ${tmp:=0}Der Doppelpunkt ist ein alias für true und nötig, weil ${:=} ja durch das Ergebnis ersetzt wird; true(:) ignoriert alle übergebenen Parameter.