|
Namens- und Parameterersetzung:
Die einfache Parameterersetzung (textuelle Ersetzung durch den Wert) wurde oben gezeigt. Es gibt zusätzlich die Möglichkeit, Voreinstellungen zu vereinbaren und auf fehlende Parameter zu reagieren. Bei den folgenden Substitutionen kann beimanchen Shell-Varianten der Doppelpunkt hinter "variable" auch fehlen. - ${shellvar:-neuerwert}: Die Variable shellvar ist deklariert:
- Die Variable shellvar hat einen Wert, dann wird auf diesen Wert referenziert.
- Die Variable shellvar hat keinen Wert, dann wird
bei der Referenzierung der Wert neuerwert eingesetzt.
- ${shellvar:=neuerwert}: Die Variable shellvar ist deklariert:
- Die Variable shellvar hat einen Wert, dann
wird auf diesen Wert referenziert.
- Die Variable shellvar hat keinen Wert, dann wird der
Variablen shellvar der Wert neuerwert zugewiesen und
bei der Referenzierung der Wert neuerwert eingesetzt.
- ${shellvar:?neuerwert}: Die Variable shellvar ist deklariert:
- Die Variable shellvar hat einen Wert, dann
wird auf diesen Wert referenziert.
- Die Variable shellvar hat keinen Wert, dann wird die
Fehlermeldung neuerwert ausgegeben und das Shellskript abgebrochen.
- ${shellvar:+neuerwert}: Die Variable shellvar ist deklariert:
- Die Variable shellvar hat einen Wert, dann wird der Wert
neuerwert referenziert.
- Die Variable shellvar hat keinen Wert, dann
bleibt dieser Zustand erhalten.
Am besten läßt sich das am Beispielen zeigen, für die folgende
Vorbesetzungen gelten:
- W1=Hello
- W2 ist nicht definiert
- der Parameter $1 habe den Wert "abc"
einfache Substitution |
$W1 |
HELLO |
String-Konkatenation |
${W1}HaHa |
HelloHaHa |
bedingte Substitution |
${W1-"is nich!"} ${W2-"is nich!"} |
Hello is nich! |
falls Variable undefiniert ist, nimm Parameter 1 |
${W1-$1} ${W2-$1} |
Hello abc |
falls Variable undefiniert, nimm $1 und brich Skript ab |
${W1?$1} ${W2?$1} |
Hello abc <Abbruch> |
falls Variable definiert, nimm $1, sonst nichts |
${W1+$1} ${W2+$1} | abc |
In Kommandodateien können Variablen auch Kommandonamen oder -aufrufe enthalten,
da ja die Substitution vor der Ausführung erfolgt.
|
|
|