• Vastliggende pagina
  • Info
  • Bijlages

Uitbreiding nodig: Dit artikel is onvolledig en moet worden uitgebreid. Meer info...

In Aanbouw: Dit artikel is nog in aanbouw. Meer info...

Shellscripts schrijven voor Ubuntu

Een belangrijk voordeel van Ubuntu systeembeheer is de mogelijkheid om beheertaken makkelijk te automatiseren met shellscripts.

Een shellscript is een bestand wat een reeks terminalopdrachten bevat. Het is vergelijkbaar met een .bat bestand op MS-DOS en Windows, maar in bash shellscripts kan ook geavanceerde logica, zoals pattern matching en conditionele uitvoering, worden geïmplementeerd.

Dit artikel bespreekt de basis van het schrijven van shellscripts, zodat u meteen aan de slag kunt!

Vereiste kennis voor dit artikel

Dit artikel gaat er van uit dat u de basis van het werken met de terminal kent. Lees hiervoor meer in het artikel Werken met de terminal. U heeft geen kennis van programmeren nodig om dit artikel te volgen, maar het kan wel helpen.

Het uitvoeren van een shellscript

Om te beginnen met het schrijven van shellscripts zullen we, zoals een traditie is voor programmeerhandleidingen, het bekende "Hello world!"-programma schrijven. Maak met uw favoriete plattetekstverwerker een nieuw bestand met de naam hello_world en typ het volgende in, waarna u het bestand opslaat:

  • echo 'Hello world!'

Geef de volgende opdracht uit om het script uit te voeren met bash:

  • bash hello_world

Nu zal de zin "Hello world!" op uw scherm verschijnen.

Geef het bestand recht om direct uit te voeren met een chmod opdracht:

  • chmod +x hello_world

Het script kan nu met de volgende opdracht worden uitgevoerd:

  • ./hello_world

Voor persoonlijke scripts kunt u een submap met de naam bin maken:

  • mkdir ~/bin
    mv hello_world bin/

De volgende keer dat u op de computer inlogt kunt u gewoon hello_world typen als opdracht in een terminalvenster waarop uw computer vriendelijk de wereld zal begroeten. Het shellscript is nu te gebruiken als een externe opdracht.

Hoe zit het met de extensie ".sh"?

Een shellscript heeft, net als andere bestanden op Ubuntu- en andere UNIX-systemen, geen verplichte extensie. Als u het makkelijker vindt om zo bestanden te vinden ga dan gerust uw gang en geef de shellscript een extensie. U kan elke extensie gebruiken die u wilt, bijvoorbeeld ".script", maar de extensie ".sh" wordt veel gebruikt.

Verschillende soorten opdrachten

Enkele opdrachten zijn ingebouwd maar veel opdrachten zijn externe opdrachten en maken gebruik van een hulpprogramma in een bestand.

  • voorbeeld: voor het kopiëren van bestanden kan gebruik worden gemaakt van de opdracht cp, deze opdracht maakt gebruik van het hulpprogramma /bin/cp.

  • shellscripts zijn te vergelijken met externe opdrachten
  • gebruik type om te zien wat een opdracht is:

    $ type cp
    cp is /bin/cp
    $ type type
    type is een ingebouwde shell-functie
    $ type hello_world
    hello_world is /home/naam/bin/hello_world

Waarom zijn ingebouwde opdrachten sneller als externe opdrachten?

  • het bestand met het hulpprogramma moet van de schijf worden gelezen,
  • voor het uitvoeren van een externe opdracht wordt een afzonderlijk proces gestart
  • Info (!) iedere externe opdracht wordt in een eigen proces uitgevoerd met eigen variabelen!

Variabelen

Variabelen gebruikt u om informatie op te slaan. Een variabele maakt u door deze een waarde te geven, bijvoorbeeld in een terminalvenster:

  • var="TEXT"
  • In plaats van 'var' kan u iedere naam gebruiken als het maar niet begint met een cijfer. In plaats van "TEXT" kan u ook van alles gebruiken.

Om de informatie uit de variabele te gebruiken moet u er een dollar '$' teken voor plaatsen:

  • var="TEXT"
    echo $var

De read opdracht kan worden gebruikt om te vragen een variabele in te voeren.

Voorbeeldscript:

  • clear
    read -p "Wat is uw naam  : " naam
    read -p "Wat is uw leeftijd  : " leeftijd
    read -p "Bent u een man of vrouw?  : " sekse
    echo "Dus u bent een $sekse van $leeftijd jaar oud met de naam $naam"

Meer info

community/Shellscripts (laatst bewerkt op 2013-08-14 09:02:07 door testcees)