web2 logo

Bash shell scripts maken

Je kan scripts maken om dingen te automatiseren, of om moeilijke opdrachten te kunnen uitvoeren zonder dat je alle parameters hoeft in te typen of te houden.
In een script kan je ook commentaarregels toevoegen als documentatie over de werking van het script.

Een bestand uitvoerbaar maken

Om een tekstbestand als script te kunnen uitvoeren, moet je het uitvoerbaar maken:
# een nieuw bestand maken met de naam: mijnscript.sh touch mijnscript.sh # eXecute aanzetten op het bestand om het uitvoerbaar te maken: chmod +x mijnscript.sh
Het script kan uitgevoerd worden als je in de directory van het script bent door de naam van het script vooraf te laten gaan door ./ om te zorgen dat er in de huidige directory naar het script gezocht wordt.
./script
Zolang het script nog leeg is, zal het niets doen.

Commentaar toevoegen in een script

Commentaar in een script is een opmerking ter verduidelijking van wat het script doet. Het commentaar wordt niet uitgevoerd. Commentaar is ook voor jezelf bedoeld, als je later het script wil aanpassen, helpt het commentaar je te begrijpen wat het script precies doet.
Je maakt een regel een commentaar regel door er een hekje (#) voor te zetten.
#!/bin/bash # dit is een commentaar regel tekst="Hallo Wereld" echo $tekst

Shebang regel als eerste regel in het script

De #!/bin/bash is commentaar, maar het heeft ook een andere functie als het in de eerste regel van een script staat. Het vertelt de computer welke shell gebruikt moet worden.
Bash is de meeste gebruikte shell, maar er zijn ook andere:
#!/bin/sh #!/bin/ksh #!/bin/dash
Als het script voor meerdere shells geschikt moet zijn, dan kan je dit gebruiken:
#!/usr/bin/env sh

Uitvoer naar het scherm met echo en printf

Gegevens op het scherm zetten kan met echo en met printf.
Het verschil tussen echo en printf is dat je met printf ook tekst kunt formatteren, vandaar de f.
# gewoon iets achter elkaar op het scherm zetten: echo hallo wereld # hetzelfde, maar nu geformatteerd met \n voor nieuwe regels printf "hallo\nwereld\n" # hallo en wereld komen nu op afzonderlijke regels te staan

Variabelen

Ja kan variabelen maken door een naam van een variabele via een = teken een waarde te geven. Er mag net voor en net na het = teken geen spatie staan.
MIJN_VARIABELE="mijn waarde"
Om de waarde van een variabele te gebruiken, moet je een dollarteken voor de naam van de variabele plaatsen:
MIJN_KLEUR="rood" echo $MIJN_KLEUR # geeft: rood echo "Mijn kleur is $MIJN_KLEUR" # geeft: Mijn kleur is rood # een variabele in een variabele: KLEUR="Mijn kleur is $MIJN_KLEUR" echo $KLEUR # geeft: Mijn kleur is rood
Je mag de naam van de variabele ook tussen accolades plaatsen:
KLEUR="Mijn kleur is ${MIJN_KLEUR}" echo $KLEUR # geeft: Mijn kleur is rood
Als je accolades gebruikt, dan mag je ook defaultwaarden meegeven:
PEN_KLEUR="" PEN="${PEN_KLEUR:-rood}" echo $PEN # geeft: rood
Ook dit kan weer genest worden:
PEN_KLEUR="" STANDAARD_PEN="rood" MIJN_PEN_KLEUR="De kleur van mijn pen is ${PEN_KLEUR:-$STANDAARD_PEN}" echo $MIJN_PEN_KLEUR # geeft: De kleur van mijn pen is rood
Environment variabelen kunnen in een script op dezelfde manier gebruikt worden als gewone scriptvariabelen. Op deze manier kan je buiten een script om al een variabele instellen en die dan gebruiken in je script.

Letters tellen van een string variabele

Het aantal tekens tellen van een variabele die een string bevat kan met # voor de naam van de variabele:
KLEUR=blauw echo ${#KLEUR} # dit geeft: 5 KLEUR=rood echo ${#KLEUR} # dit geeft: 4 KLEUR="groen en geel" echo ${#KLEUR} # dit geeft: 13

Beslissingen nemen met if then else elif

Een conditie testen en op basis daarvan een aantal opdrachten wel of niet uitvoeren kan met if-blokken. De algemene syntax hiervan:
#if then if [[ conditie ]] then opdrachten fi #if else if [[ conditie ]] then opdrachten else opdrachten fi #if elseif else if [[ conditie ]] then opdrachten elif [[ conditie ]] then opdrachten else opdrachten fi

De condities bestaan uit vergelijkingen: groter dan
In veel programmeertalen wordt > gebruikt, maar dat is in Bash een redirect teken, in Bash wordt -gt gebruikt:
if [[ ${#KLEUR} -gt 3 ]] then echo "$KLEUR heeft meer als 3 letters" fi

groter of gelijk aan
Groter of gelijk aan kan met -ge worden getest:
if [[ ${#KLEUR} -ge 3 ]] then echo "$KLEUR heeft minstens 3 letters" fi

kleiner dan
Voor kleiner dan wordt -lt gebruikt:
if [[ ${#KLEUR} -lt 3 ]] then echo "$KLEUR heeft minder als 3 letters" fi

kleiner of gelijk aan
Voor kleiner of gelijk aan wordt -le
if [[ ${#KLEUR} -le 3 ]] then echo "$KLEUR heeft maximaal 3 letters" fi

gelijk aan
Gelijk aan wordt getest met = gebruikt voor het vergelijken van tekst:
if [[ $KLEUR = "rood" ]] then echo "rood is de kleur" fi
Voor het vergelijken van getallen wordt eq gebruikt: if [[ ${#KLEUR} = 4 ]] then echo "$KLEUR heeft 4 letters" fi

ongelijk aan
Ongelijk aan wordt getest met !=:
if [[ $KLEUR != "rood" ]] then echo "rood is niet de kleur" fi

bevat
Via het wildcard karakter * kan je testen of een string een andere string bevat:
if [[ "blauw" = *"auw"* ]] then echo "auw zit in blauw" fi

groter dan nul
Testen op groter dan nul kan met -n:
if [[ -n $KLEUR ]] then echo "$KLEUR heeft meer letters als 0" fi
gelijk aan nul
Testen op gelijk aan nul kan met -z:
if [[ -z $KLEUR ]] then echo "KLEUR is leeg" else echo "$KLEUR heeft meer letters als 0" fi

Toegevoegd door: Kees de Keijzer
Twitter: @kdkq

~ linux ~

~ Onderwerpen ~

Dit is een website zonder pop-ups

~ Links ~

Design & Development by Cyberwebdesign.nl for web2.nl © 2020.