page header photo

maart 2017 Archieven

Shell variabelen


Geplaatst door martijn_brekhof op 2017-03-03 10:53:42 | Permanente link | Categorie: Systeembeheer | Reacties: 0

Tijdens onze Unix/Linux beginnerscursussen leer je gebruik te maken van de mogelijkheden die de shell je biedt. Hieronder vallen ook het koppelen van processen door middel van een zogeheten pipe en het gebruik van shell variabelen. Nu komt de volgende pipe vaak voor tijdens de cursus:

$ who | wc -l

Hiermee tel je dan het aantal terminals dat er in totaal openstaat. Wanneer vervolgens shell variabelen worden behandeld kijkt men vreemd op wanneer men het volgende probeert op onze CentOS 7 oefenomgeving:

$ MIJNVAR='who | wc -l'
$ $MIJNVAR
$

Geen uitvoer! Hoe kan dat nou?!

Wat er gebeurt is dat de shell bij het tweede commando wel degelijk de variabele MIJNVAR vervangt door zijn waarde: who | wc -l. Echter, nadat de variabele is vervangen door de waarde wordt de regel niet nogmaals geanalyseerd voor speciale tekens. Dus de pipe wordt nooit opgezet en het commando dat wordt uitgevoerd is who met 3 argumenten. Waarvan één argument de optie -l is, dat alleen systeem login processen laat zien. Hierdoor is er geen uitvoer. Zonder de optie -l laat who alleen de ingelogde gebruiker zien.

$ MIJNVAR='who | wc'
$ $MIJNVAR
martijn  pts/13       2009-04-07 15:02 (atcomputing)