Parameter Substitution (Bash): verschil tussen versies
(→${}) |
|||
Regel 14: | Regel 14: | ||
</pre> | </pre> | ||
− | Door accolades toe te voegen, is het concept van ''expansie'' misschien nog duidelijker | + | Door accolades toe te voegen, is het concept van ''expansie'' misschien nog duidelijker. Ihb., dat parameter-namen binnen accolades geen $-teken krijgen |
<pre> | <pre> | ||
Regel 23: | Regel 23: | ||
</pre> | </pre> | ||
− | + | == ${parameter:-word} == | |
+ | |||
+ | Gebruik deze syntaxis om <code>parameter</code> te vervangen door ''literal'' <code>word</code> als deze eerste leek is. Zoiets als <code>ifnull(a, b)</code> is SQL: | ||
+ | |||
+ | <pre> | ||
+ | # De parameter bestaat en heeft een waarde: | ||
+ | |||
+ | $ i1="Hello, world!" | ||
+ | $ echo ${i1:-De parameter is leeg!} | ||
+ | |||
+ | Hello, world! | ||
+ | </pre> | ||
+ | |||
+ | <pre> | ||
+ | # De parameter bestaat niet - De literal wordt weergegeven | ||
+ | |||
+ | $ i1="Hello, world!" | ||
+ | $ echo ${i3:-De parameter is leeg!} | ||
+ | |||
+ | De parameter is leeg! | ||
+ | </pre> | ||
+ | |||
+ | Wil je in plaats van een ''literal'' een parameter meegeven? Geen probleem: Daar gaat dit artikel over: | ||
+ | |||
+ | <pre> | ||
+ | $ i1="Hello, world!" | ||
+ | $ i2="Vervanging" | ||
+ | $ echo ${i3:-${i2}} | ||
+ | |||
+ | Vervanging | ||
+ | </pre> | ||
== Find-&-replace == | == Find-&-replace == |
Versie van 1 aug 2021 19:01
Parameter substitution, parameter expansion of shell parameter expansion betekent dat in een Bash-expressie een parameter of variabele wordt vervangen door de inhoud van die variabele, al of niet in combinatie met een bewerking.
Parameter expansion wordt aangegeven met $
, vaak in combinatie met accolades: ${}
, of nog completer: ${parameter}
.
${}
Zoiets simpels als het weergeven van de waarde van een variabele, is al een voorbeeld van parameter substitution:
$ a=12 $ echo $a 12
Door accolades toe te voegen, is het concept van expansie misschien nog duidelijker. Ihb., dat parameter-namen binnen accolades geen $-teken krijgen
$ a=12 $ echo ${i} 12
${parameter:-word}
Gebruik deze syntaxis om parameter
te vervangen door literal word
als deze eerste leek is. Zoiets als ifnull(a, b)
is SQL:
# De parameter bestaat en heeft een waarde: $ i1="Hello, world!" $ echo ${i1:-De parameter is leeg!} Hello, world!
# De parameter bestaat niet - De literal wordt weergegeven $ i1="Hello, world!" $ echo ${i3:-De parameter is leeg!} De parameter is leeg!
Wil je in plaats van een literal een parameter meegeven? Geen probleem: Daar gaat dit artikel over:
$ i1="Hello, world!" $ i2="Vervanging" $ echo ${i3:-${i2}} Vervanging
Find-&-replace
Gelijk al een raar voorbeeld: Het eerste argument moet een variabele zijn, maar de tweede en derde zijn literals???
naam="Janneke" echo ${naam/a/A} JAnneke # Dit doet nix, want variable heeft geen waarde: # echo ${Jasper/a/A} # Dit geeft foutmelding - Snap ik niet # echo ${"Jasper"/a/A} echo ${"Jasper"/a/A}: bad substitution