DevOps-bootcamp · Les

Foutafhandeling en afsluitstatus

Implementeer robuuste foutcontrole in uw scripts door afsl statuscodes te begrijpen en 'set -e' en voorwaardelijke logica te gebruiken.

Les 2 van 411 stappen

Foutafhandeling en afsluitstatus 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.

Welkom bij foutafhandeling

In deze les maakt u uw Bash-scripts robuuster door te leren hoe u fouten effectief afhandelt.

Stel u een script voor dat veel stappen uitvoert. Als één stap mislukt, wilt u toch dat uw script stopt of op zijn minst weet dat de stap is mislukt? Daar komt foutafhandeling van pas!

Wat is een afsl status?

Elke opdracht die u in de Linux-shell uitvoert, retourneert een afsluitstatus (soms ook een afsluitcode of retourcode genoemd).

  • Een status van 0 betekent dat de opdracht succesvol is voltooid.
  • Een status die niet nul is (bijvoorbeeld 1, 2 of 127) duidt op een vorm van mislukking of een fout.

Het is als een verkeerslicht voor uw opdrachten!

De afsluitstatus handmatig controleren

U kunt de afsluitstatus van de laatst uitgevoerde opdracht controleren met de speciale variabele $?.

Laten we een geslaagde opdracht en een mislukte opdracht proberen:

#!/bin/bash

echo "Hello CoddyKit"
echo "Exit status: $?"

ls non_existent_file.txt
echo "Exit status: $?"

Eenvoudige voorwaardelijke foutcontrole

Als u de afsluitstatus kent, kan uw script beslissingen nemen. U kunt een if-instructie gebruiken om $? te controleren en op fouten te reageren.

Zo wordt uw script zich bewust van problemen en voorkomt u dat het doorgaat met ongeldige gegevens.

#!/bin/bash

ls non_existent_file.txt

if [ $? -ne 0 ]; then
  echo "Error: The 'ls' command failed!"
  exit 1 # Exit script with an error code
fi

echo "This line will not run if 'ls' fails."

De kracht van `set -e`

Het kan omslachtig zijn om na elke opdracht handmatig $? te controleren. Daar komt set -e goed van pas!

Wanneer u een script start met set -e, wordt Bash onmiddellijk afgesloten als een opdracht die geen deel uitmaakt van een voorwaardelijke test eindigt met een status die niet nul is.

Het is een algemene veiligheidsschakelaar voor uw scripts!

`set -e` in actie

Laten we bekijken hoe set -e voorkomt dat een script na een fout doorgaat. Let erop dat de laatste echo-opdracht nooit wordt bereikt.

#!/bin/bash
set -e

echo "Starting important tasks..."

# This command will fail
cp /non_existent_source /tmp/destination

echo "This line will NOT be printed if 'cp' fails."
echo "All tasks completed successfully."

Wanneer `set -e` niet stopt

set -e is krachtig, maar heeft specifieke regels. Het zorgt niet dat het script wordt afgesloten als de mislukte opdracht:

  • deel uitmaakt van een if- of while-voorwaarde;
  • deel uitmaakt van een &&- of ||-lijst (behalve de laatste opdracht);
  • wordt voorafgegaan door !.

Deze contexten zijn bedoeld om succes of mislukking te testen, dus `set -e` staat niet in de weg.

`set -e` combineren met `||`

Soms wilt u een aangepast foutbericht tonen voordat u afsluit. U kunt set -e combineren met de operator || (OF).

command || { echo "Error message"; exit 1; }

Als command mislukt, wordt het gedeelte na || uitgevoerd, wordt uw bericht afgedrukt en wordt het script vervolgens afgesloten met een specifieke foutcode.

#!/bin/bash
set -e

echo "Attempting to find a file..."

find /non_existent_dir -name "*.txt" || \
  { echo "ERROR: Could not search in /non_existent_dir!"; exit 1; }

echo "Script continued (this won't print if 'find' fails)."

Specifieke afsluitcodes afhandelen

Hoewel 0 succes betekent en een waarde die niet nul is mislukking, kunnen specifieke waarden die niet nul zijn verschillende betekenissen hebben.

  • 1: algemene fout.
  • 2: onjuist gebruik van ingebouwde shellopdrachten.
  • 127: opdracht niet gevonden.

U kunt if [ $? -eq 127 ] gebruiken om specifieke soorten mislukking te controleren, zodat u gerichtere foutinformatie kunt geven.

Quiz over foutafhandeling

Welke van de volgende uitspraken over afsluitstatussen en foutafhandeling in Bash is WAAR?

Samenvatting: robuuste scripts

U hebt geleerd hoe u uw Bash-scripts veel betrouwbaarder maakt!

  • Elke opdracht retourneert een afsluitstatus (0 voor succes, een waarde die niet nul is voor mislukking).
  • De variabele $? geeft de afsluitstatus van de laatste opdracht.
  • set -e is een krachtig hulpmiddel dat uw script automatisch afsluit bij de meeste mislukte opdrachten.
  • Combineer set -e met || voor aangepaste foutberichten.

Met deze technieken schrijft u professionelere en stabielere scripts.

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 “Foutafhandeling en afsluitstatus” gratis?

Ja — je kunt hier op het web alle 3 lessen van het leerpad DevOps-bootcamp, waaronder “Foutafhandeling en afsluitstatus”, 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 “Foutafhandeling en afsluitstatus”?

Implementeer robuuste foutcontrole in uw scripts door afsl statuscodes te begrijpen en 'set -e' en voorwaardelijke logica te gebruiken. 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 “Foutafhandeling en afsluitstatus”?

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. Bash-scripts debuggen (set -x, trap)
  2. Foutafhandeling en afsluitstatus
  3. Best practices voor scripting en linting
  4. Bash-scripts testen met Bats
← Terug naar DevOps-bootcamp