Scripting Basis

← Terug naar overzicht

echo en Variabelen

Het commando echo toont tekst op het scherm. Je kunt er gewone tekst mee printen, maar ook de waarde van variabelen weergeven.

Linux heeft ingebouwde omgevingsvariabelen (environment variables):

Je kunt ook eigen variabelen maken:

naam="Linux"
echo "Hallo $naam"

Let op: bij het toewijzen van een variabele mag er geen spatie staan rond het = teken. Gebruik dubbele aanhalingstekens als je variabelen wilt laten vervangen in tekst.

Oefening 1

Toon de tekst Hallo wereld op het scherm.

Jouw commando:

Oefening 2

Je wilt weten wat je homedirectory is. Toon de waarde van de omgevingsvariabele die je homedirectory bevat.

Jouw commando:

Oefening 3

Toon je huidige gebruikersnaam door de juiste omgevingsvariabele weer te geven.

Jouw commando:

Oefening 4

Sla de waarde Linux op in een zelfgekozen variabele en toon vervolgens de tekst Welkom bij Linux. De waarde moet uit de variabele komen, niet hardcoded in de tekst staan. Doe dit op een enkele regel.

Jouw commando:

Oefening 5

Toon de huidige werkdirectory op twee verschillende manieren in een enkele regel. Gebruik eerst een omgevingsvariabele en daarna een commando dat de werkdirectory toont. De uitvoer moet twee keer hetzelfde pad tonen.

Jouw commando:

Commando's combineren

Je kunt meerdere commando's op een regel zetten met speciale operatoren:

| Operator | Betekenis | Voorbeeld |

|----------|-----------|-----------|

| ; | Voer altijd het volgende commando uit | cmd1; cmd2 |

| && | Voer het volgende commando alleen uit als het vorige slaagde | cmd1 && cmd2 |

| \|\| | Voer het volgende commando alleen uit als het vorige faalde | cmd1 \|\| cmd2 |

Met commando-substitutie $(commando) kun je de uitvoer van een commando gebruiken als tekst:

echo "Er zijn $(ls | wc -l) bestanden"
echo "Vandaag is het $(date)"

Oefening 1

Toon eerst de tekst Stap 1 en daarna de tekst Stap 2, allebei op een eigen regel. Beide opdrachten moeten altijd uitgevoerd worden, ongeacht of de eerste slaagt of faalt. Doe dit op een enkele regel.

Jouw commando:

Oefening 2

Probeer de inhoud van de map /home/user/bestaatNiet op te vragen. Deze map bestaat niet, dus dat zal mislukken. Zorg ervoor dat als dat mislukt, de tekst Map niet gevonden wordt getoond. Doe dit op een enkele regel.

Jouw commando:

Oefening 3

Maak de map /home/user/testmap aan. Alleen als dat lukt, moet de tekst Map aangemaakt worden getoond. Doe dit op een enkele regel.

Jouw commando:

Oefening 4

Tel hoeveel bestanden er in /home/user/Documents/ staan en toon het resultaat in het formaat Aantal: N (waarbij N het werkelijke aantal is). Het getal moet automatisch berekend worden, niet handmatig ingevuld.

Jouw commando:

Oefening 5

Maak een bestand /home/user/Documents/info.txt aan dat de tekst Gebruiker: user bevat. De gebruikersnaam mag niet hardcoded zijn, maar moet automatisch uit het systeem komen.

Jouw commando:

Oefening 6

Voer de volgende drie stappen uit op een enkele regel. Stap 1: maak de map /home/user/backup aan. Stap 2: kopieer het bestand /home/user/Documents/readme.txt naar die map. Stap 3: toon de tekst Backup klaar. Elke stap mag alleen uitgevoerd worden als de vorige is geslaagd.

Jouw commando:

for loops

Met een for-loop kun je een commando herhalen voor een reeks waarden. Op de commandoregel schrijf je dit als one-liner:

for variabele in lijst; do commando; done

Voorbeelden:

for i in 1 2 3; do echo "Nummer $i"; done
for bestand in *.txt; do echo "Gevonden: $bestand"; done
for naam in jan piet klaas; do echo "Hallo $naam"; done

Je kunt ook een reeks getallen genereren met seq:

for i in $(seq 1 5); do echo "Stap $i"; done

Binnen de loop kun je elk commando gebruiken, zoals touch, mkdir, echo, enzovoort.

Oefening 1

Toon de getallen 1, 2 en 3 elk op een aparte regel, met behulp van een herhalingsstructuur.

Jouw commando:

Oefening 2

Begroet drie personen: alice, bob en charlie. Voor elke persoon moet de tekst Hallo <naam> verschijnen op een aparte regel. Gebruik een herhalingsstructuur.

Jouw commando:

Oefening 3

Maak drie lege bestanden aan in /home/user/Documents/: deel1.txt, deel2.txt en deel3.txt. Gebruik een herhalingsstructuur zodat je niet drie losse commando's hoeft te schrijven.

Jouw commando:

Oefening 4

Maak vijf mappen aan in /home/user/: project1 tot en met project5. De nummers moeten automatisch gegenereerd worden; schrijf ze niet handmatig uit. Gebruik een herhalingsstructuur.

Jouw commando:

Oefening 5

Geef een overzicht van alle .txt-bestanden in /home/user/Documents/. Voor elk gevonden bestand moet de tekst Bestand: <pad> getoond worden. Gebruik een herhalingsstructuur.

Jouw commando:

Oefening 6

Maak drie bestanden aan in /home/user/Documents/: log1.txt, log2.txt en log3.txt. Elk bestand moet als inhoud de tekst Logbestand N bevatten, waarbij N het bijbehorende nummer is. Gebruik een herhalingsstructuur.

Jouw commando:

Samenvatting

In dit hoofdstuk heb je de basis van shell-scripting op de commandoregel geleerd:

echo en variabelen:

Commando's combineren:

for loops: