Variabelen (Bash): verschil tussen versies

Uit De Vliegende Brigade
Naar navigatie springen Naar zoeken springen
Regel 13: Regel 13:
 
</pre>
 
</pre>
  
== Expansion - Gewoon ==
+
== Expansion ==
 +
 
 +
=== In den beginne... ===
  
 
Tijdens de executie van zoiets als dit:
 
Tijdens de executie van zoiets als dit:

Versie van 3 sep 2020 17:58

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

In den beginne...

Tijdens de executie van zoiets als dit:

i="foo bar"
echo $i

Gebeuren er een paar dingen:

  1. De variabele wordt geëxpandeerd voordat het commando wordt uitgevoerd. Dus echo $i wordt eerst echo foo bar
  2. 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.