Variablen Substituion

tuxlover

tuxlover

Der den Tux knuddelt
hallo allerseits,

ich habe mich nun ein bisschen mit der shell-programmierung auseinandergesetzt und bin nun bei dem Kapitel "Variable Substition" hängengeblieben. Dazu folgende Frage:

Was ist der Unterschied zwischen

a)${<VARIABLE>:-<wert>}

b)${<VARIABLE>:=<wert>}

und

c)${<VARIABLE>:+<wert>}

Es wäre nett wenn mir das der eine odere andere mal an einem klar ersichtlichen Beispiel erklären könnte. Ich habe schon das Internet durchforstet und schon eine grobe Ahnung was der Unterschied sein könnte. Sicher bin ich mir aber nicht.

vielen dank
 
Code:
       ${parameter:-word}
              Use  Default  Values.  If parameter is unset or null, the expan-
              sion of word is substituted.  Otherwise, the value of  parameter
              is substituted.
       ${parameter:=word}
              Assign  Default  Values.   If  parameter  is  unset or null, the
              expansion of word is assigned to parameter.  The value of param-
              eter  is  then  substituted.   Positional parameters and special
              parameters may not be assigned to in this way.
       ${parameter:+word}
              Use Alternate Value.  If parameter is null or unset, nothing  is
              substituted, otherwise the expansion of word is substituted.

Sollte eigentlich verständlich sein, aber trotzdem noch ein Beispiel:

":="
Code:
[~]$ echo $a

[~]$ echo ${a:=1}
1
[~]$ echo $a
1
[~]$ echo ${a:=2}
1
[~]$ echo $a
1

Wenn Variable nicht gesetzt ist, wird ihr "1" zugeordnet und ${a:=1} wird als "1" ausgewertet. Wenn Variable gesetzt ist, dann wird {a:=} als $a ausgewertet.

":-"
Code:
[~]$ echo $a

[~]$ echo ${a:-1}
1
[~]$ echo $a

Wenn Variable nicht gesetzt ist, wird der Ausdruck "${a:-1}" als "1" ausgewertet, a wird aber nicht gesetzt.

":+"
Code:
[~]$ echo $a

[~]$ echo ${a:+1}
1
[~]$ a=2
[~]$ echo ${a:+1}

[~]$ echo $a
2

Wenn Variable nicht gesetzt ist, wird ${a:+1} als "1" ausgewertet, es erfolgt keine Zuweisung an a.

Gruss, Phorus
 
Zuletzt bearbeitet:
hallo phorus,

haben wir das gleiche buch? "Teach yourself shellprogramming in 24 hours?" genau das was du oben zitierst habe ich nicht verstanden. aber jetzt mit dem beispiel ist es klar geworden.

danke
 

Ähnliche Themen

Telefoninterview (Wie sich auf Bash-Shell-Fragen vorbereiten?)

mysql Select Abfrageergebnis in unterschiedlichen Variablen sichern

mittels if abfrage datei nach variabelnwert durchsuchen

how to declare float?

suchen und ersetzen, Format erhalten

Zurück
Oben