Met scripts kunnen we kleine programma's schrijven.
In UNIX hangt de taal waarin je de scripts schrijft af van welke shell je gebruikt. De standaard Linux shell is bash, maar csh (C-shell) is ook voorhanden. In dit hoofdstuk bespreken we hoe je een programma kan schrijven met de bash-shell.
Andere veel gebruikte scripting talen die geen shell gebruiken zijn perl en python
>
Om het systeem aan te geven dat we de Bash-shell gebruiken zetten we in het begin van het programma: #!/bin/bash
Net zoals andere programmeertalen heeft de bash-shell ondersteuning van selecties en iteraties.
We kunnen aan een programma ook argumenten meegeven. Je moet hiervoor het scripts starten met bijkomende data achter het commando. Die data wordt dan geïnterpreteerd als argument(en).
De bedoeling van volgende voorbeeldscripts is om op een praktische manier de syntax van Bash-shell te bekijken.
Maak een nieuwe map aan in de home-dir waarin je de ingetypte scripts bewaart. Een script start je door de naam in te typen voorafgegaan van een "./" (./script). Voor dat je een script uitvoert moet je jezelf ook nog rechten geven om dit bestand uit te voeren. Doe dit met het commando "chmod 755 scriptnaam".
Eenvoudig script
We beginnen met een script dat enkele lijnen op het scherm afprint.
Waarvoor dient de optie "-n" in de derde lijn?
Waarom gebruiken we daar "" tekens?
Argumenten
Je gaat nu een script maken dat gebruik maakt van argumenten. Je kan argumenten meegeven door deze achter de bestandsnaam te plaatsen bij het starten van een script.
Met "$#" vraag je het aantal argumenten op.
#!/bin/bash
echo There are $# arguments
Wat is de uitvoer volgende twee commando's? (wijzig scriptnaam indien nodig)
./script2 een twee drie vier
./script2 "een twee drie vier"
Selectie
De selectie heeft de structuur "if [_conditie(s)_]; then (doe iets) else (doe iets) fi".
De "else" tak mag weggelaten worden. De "fi" toont het einde van dit blok.
Logische operatoren (NOT, OR, AND) worden voorgesteld als !, || en &&.
Voer volgende lijnen bij achteraan het script.
Met de optie "-e" onderzoek je het bestaan van een bestand (zie man bash voor meer info). De "$1" staat voor de variabele dat het eerste argument bevat.
Voer het programma uit met enkele testwaarden. Probeer het programma ook eens uit te voeren zonder argumenten.
Wat gaat er mis? Pas het script aan zodat het correct werkt.
For-iteratie
Met een "for"-loop kunnen we een iteratie uitvoeren waarvan we vooraf weten hoeveel keer we het moeten uitvoeren.
Wijzig lijn 2 in:
for i in `seq 1 10`;
Je zal merken dat dit dezelfde uitwerking heeft.
While-iteratie
Indien we voorafgaand niet weten hoeveel keer we door een lus moeten, gebruiken we best een "while".
Het volgende script zoekt een woord op zolang er invoer is, anders stopt het.
Waarom zetten we in de if-test "$word" tussen aanhalingstekens?
Vergelijkingen
Probeer van het volgende programma te achterhalen wat het precies doet
Bij invoer van welke getallen krijgen we welke uitvoer?
Wat betekenen -le -lt -ge -gt -eq -ne? (-eq en -ne komen niet voor in het programma)
Gebruik de handleiding/man pages om dit op te zoeken.
Met "declare" kan men een variabele declareren. Het declareren is niet verplicht, maar kan nuttig zijn indien je de variabele wil blokkeren voor andere types van data. De optie "-i" forceert een integer. (zie man pages voor de syntax van andere declaraties)
Case
Net zoals in andere programmeertalen heb je ook "case" ter beschikking. Bestudeer de syntax van case (schrijf deze eventueel op).