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.
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
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.
Powered by vBulletin® Version 4.2.5 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.