Variabelen (Bash): verschil tussen versies
Naar navigatie springen
Naar zoeken springen
Regel 13: | Regel 13: | ||
</pre> | </pre> | ||
− | == Expansion == | + | == Expansion - Gewoon == |
Tijdens de executie van zoiets als dit: | Tijdens de executie van zoiets als dit: | ||
Regel 33: | Regel 33: | ||
echo "$i" | echo "$i" | ||
</pre> | </pre> | ||
+ | |||
+ | == Expansion - Pad namen niet == | ||
+ | |||
+ | Ik dacht een tijdje dat dit een extreem voorbeeld van expansie was: | ||
+ | |||
+ | <pre> | ||
+ | pad="/var/www/*" | ||
+ | echo $pad | ||
+ | </pre> | ||
+ | |||
+ | maar dat is niet zo: <code>echo /var/www/*</code> geeft namelijk precies hetzelfde resultaat. |
Versie van 3 sep 2020 17:50
Let op: Variabelen - ihb. expansion van variabelen, lijkt op nix dat ik uit andere programmeertalen ken.
Variabelen initialiseren
Belangrijk dat er geen spaties staan rondom aanroepen van variabelen:
in_bestand="2017.09.24-19.12.32-intermediate-01-org.mp4" uit_bestand="2017.09.24-19.12.32-intermediate-01-uit.mp4" echo $in_bestand echo $uit_bestand
Expansion - Gewoon
Tijdens de executie van zoiets als dit:
i="foo bar" echo $i
Gebeuren er een paar dingen:
- De variabele wordt geëxpandeerd voordat het commando wordt uitgevoerd. Dus
echo $i
wordt eerstecho foo bar
- Speciale tekens in de geëxpandeerde variabele, worden niet ge-escaped ofzo. Het echo-commando ziet hier dus twee argumenten. Toevallig weet echo daar wel raad mee, maar dat geldt niet voor alle commando's
De spaties in geëxpandeerde variabelen, kun je ondervangen door de variabele binnen dubbele aanhalingstekens te zetten:
i="foo bar" echo "$i"
Expansion - Pad namen niet
Ik dacht een tijdje dat dit een extreem voorbeeld van expansie was:
pad="/var/www/*" echo $pad
maar dat is niet zo: echo /var/www/*
geeft namelijk precies hetzelfde resultaat.