DevOps-bootcamp · Les

Functies in Bash-scripts

Organiseer uw code met functies om hergebruik te bevorderen en uw scripts overzichtelijker en eenvoudiger te onderhouden te maken.

Les 2 van 411 stappen

Functies in Bash-scripts is een gratis DevOps-bootcamp-les op CoddyKit. Dit is les 2 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject DevOps-bootcamp. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus DevOps-bootcamp bevat in totaal 4 lessen.

Wat zijn Bash-functies?

In Bash-scripting is een functie een codeblok dat een specifieke taak uitvoert. Zie het als een miniscript binnen je hoofdscript.

Functies helpen je om:

  • Code te hergebruiken: schrijf een stuk logica één keer en roep het meerdere keren aan.
  • Scripts te organiseren: deel complexe taken op in kleinere, beheersbare eenheden.
  • De leesbaarheid te verbeteren: maak je script eenvoudiger te begrijpen en te onderhouden.

Een eenvoudige functie definiëren

Er zijn twee gebruikelijke manieren om een functie in Bash te definiëren. Beide leveren hetzelfde resultaat op. De eerste syntaxis wordt het vaakst gebruikt.

Probeer dit voorbeeld uit te voeren. Het definieert functies, maar roept ze nog niet aan!

#!/bin/bash

# Method 1: The most common way
my_first_func () {
  echo "Hello from my_first_func!"
}

# Method 2: Using the 'function' keyword
function my_second_func {
  echo "Hello from my_second_func!"
}

echo "Functions defined, but not called."

Je functies aanroepen

Een functie definiëren betekent niet dat deze wordt uitgevoerd. Om de code in een functie uit te voeren, roep je de functie eenvoudig aan met haar naam, net als elke andere opdracht.

Bekijk hoe we my_function aanroepen nadat we deze hebben gedefinieerd:

#!/bin/bash

my_function () {
  echo "This message is from inside the function."
}

echo "Script started."
my_function # Call the function here
echo "Script finished."

Lokale variabelen in functies

Standaard zijn variabelen die binnen een Bash-functie worden gedefinieerd globaal. Dat betekent dat je ze overal in het script kunt benaderen en wijzigen.

Gebruik het sleutelwoord local om een variabele als lokaal te declareren. Zo voorkom je onbedoelde neveneffecten en houd je functies geïsoleerd. Lokale variabelen bestaan alleen binnen die functie.

#!/bin/bash

global_message="I'm a global message"

my_function () {
  local func_message="I'm a local message"
  global_message="I've been changed by the function!"
  echo "Inside func: $func_message"
  echo "Inside func: $global_message"
}

echo "Before func: $global_message"
my_function
echo "After func: $global_message"
echo "After func: $func_message (This will be empty)"

Argumenten aan functies doorgeven

Je kunt informatie aan je functies doorgeven met argumenten, net als bij gewone shellopdrachten. Binnen de functie benader je deze argumenten met speciale variabelen:

  • $1, $2, $3...: afzonderlijke argumenten
  • $#: het totale aantal argumenten
  • $@: alle argumenten als afzonderlijke tekenreeksen
#!/bin/bash

greet_user () {
  echo "Hello, $1!"
  echo "You are $2 years old."
  echo "Total arguments received: $#"
  echo "All arguments: $@"
}

echo "Calling greet_user with two arguments:"
greet_user "Alice" 30

echo "\nCalling greet_user with one argument:"
greet_user "Bob"

Afsluitstatus van een functie (return)

Een functie retourneert, net als elke opdracht, een afsluitstatus. Volgens afspraak betekent 0 dat de uitvoering is geslaagd en duidt elke waarde die niet nul is op een fout.

Je gebruikt het sleutelwoord return om deze afsluitstatus in te stellen. Daarna kun je de status direct na de functieaanroep controleren met de speciale variabele $?.

#!/bin/bash

check_age () {
  local age=$1
  if [ "$age" -ge 18 ]; then
    return 0 # Success: 18 or older
  else
    return 1 # Failure: under 18
  fi
}

check_age 25
echo "Exit status for 25: $?"

check_age 16
echo "Exit status for 16: $?"

if check_age 20; then
  echo "User is an adult."
else
  echo "User is a minor."
fi

Uitvoer van een functie opvangen

Met return geef je een afsluitstatus door. Als je wilt dat een functie een 'waarde' produceert die in een variabele kan worden opgeslagen, moet de functie die waarde met echo naar de standaarduitvoer schrijven.

Vervolgens vang je deze uitvoer op met opdracht-substitutie door de functieaanroep in $(...) te plaatsen.

#!/bin/bash

get_full_name () {
  local first_name=$1
  local last_name=$2
  echo "$first_name $last_name" # Echo the full name
}

name="$(get_full_name "John" "Doe")"

echo "Full name captured: $name"

calculate_area () {
  local length=$1
  local width=$2
  echo $((length * width))
}

area=$(calculate_area 10 5)
echo "Calculated area: $area"

Praktisch voorbeeld: een logger

Hier is een praktisch voorbeeld van een herbruikbare functie: een eenvoudige logger. Je kunt deze functie overal in je script aanroepen om berichten met een tijdstempel af te drukken, waardoor foutopsporing en het bijhouden van gebeurtenissen eenvoudiger worden.

#!/bin/bash

log_message () {
  local timestamp=$(date +"%Y-%m-%d %H:%M:%S")
  local message="$1"
  echo "[$timestamp] $message"
}

log_message "Script execution started."
sleep 1 # Simulate some work
log_message "Processing user data..."
sleep 1
log_message "Operation completed successfully."

Aanbevolen werkwijzen voor functies

Houd rekening met deze tips om duidelijke en onderhoudbare scripts met functies te schrijven:

  • Houd het eenvoudig: elke functie moet één ding goed doen.
  • Gebruik betekenisvolle namen: gebruik beschrijvende namen zoals validate_input of create_backup.
  • Gebruik local: gebruik altijd local voor variabelen binnen functies om conflicten te voorkomen.
  • Voeg opmerkingen toe: leg uit wat je functie doet, welke argumenten deze gebruikt en wat de functie retourneert.
  • Valideer de invoer: controleer de argumenten als een functie specifieke argumenten verwacht.

Argumenten van een functie controleren

Toets je begrip van de manier waarop argumenten aan Bash-functies worden doorgegeven en daarin worden benaderd.

Functies: samenvatting en volgende stappen

Goed gedaan! Je beheerst nu Bash-functies.

We hebben behandeld:

  • functies definiëren en aanroepen.
  • local gebruiken voor het bereik van variabelen.
  • argumenten doorgeven met $1, $#, $@.
  • de afsluitstatus instellen met return.
  • uitvoer opvangen met echo en opdracht-substitutie.

Functies zijn essentieel voor het schrijven van modulaire, herbruikbare en onderhoudbare Bash-scripts. Blijf oefenen om je scripts krachtiger en overzichtelijker te maken!

Gratis beginnen

Leer DevOps-bootcamp met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
142
Lessen
568

Veelgestelde vragen

Is de les “Functies in Bash-scripts” gratis?

Ja — je kunt hier op het web alle 3 lessen van het leerpad DevOps-bootcamp, waaronder “Functies in Bash-scripts”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus DevOps-bootcamp bevat in totaal 4 lessen.

Wat leer ik in “Functies in Bash-scripts”?

Organiseer uw code met functies om hergebruik te bevorderen en uw scripts overzichtelijker en eenvoudiger te onderhouden te maken. Je oefent met DevOps-bootcamp door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met DevOps-bootcamp te beginnen?

Ervaring vooraf is niet nodig. DevOps-bootcamp op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 2 van 4.

Hoe lang duurt de les “Functies in Bash-scripts”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over DevOps-bootcamp?

Ja. Elke les over DevOps-bootcamp bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. Lusconstructies (for, while)
  2. Functies in Bash-scripts
  3. Scriptargumenten en opties ($@, $#, getopts)
  4. De case-instructie en patroonherkenning
← Terug naar DevOps-bootcamp