De Linux-opdrachtregel en Bash-scripting beheersen · Les

Bash-scripts debuggen (set -x, trap)

Ontdek methoden om uw Bash-scripts te debuggen, waaronder het volgen van de uitvoering en het gebruik van 'trap' voor foutafhandeling.

Les 1 van 411 stappen

Bash-scripts debuggen (set -x, trap) is een gratis De Linux-opdrachtregel en Bash-scripting beheersen-les op CoddyKit. Dit is les 1 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject De Linux-opdrachtregel en Bash-scripting beheersen. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus De Linux-opdrachtregel en Bash-scripting beheersen bevat in totaal 4 lessen.

Waarom je scripts debugt

Zelfs de beste scripts kunnen fouten bevatten! Debuggen is het proces van deze fouten vinden en oplossen.

Het is een essentiële vaardigheid voor elke ontwikkelaar. Je krijgt er inzicht door in wat je script stap voor stap doet en waar het mis kan gaan.

In deze les leer je krachtige Bash-hulpmiddelen om de uitvoering te traceren en onverwachte gebeurtenissen af te handelen.

Uw script traceren met `set -x`

Een van de eenvoudigste en effectiefste hulpmiddelen voor foutopsporing in Bash is set -x. Hiermee schakelt u opdrachttracering in.

  • Wanneer deze optie actief is, toont Bash elke opdracht en de argumenten ervan op de standaardfoutuitvoer (wat meestal uw terminal betekent), vlak voordat de opdracht wordt uitgevoerd.
  • Deze uitvoer bevat de waarden van variabelen na expansie, zodat u duidelijk ziet wat Bash gaat doen.
  • Het is alsof u uw script in slow motion ziet uitvoeren!

`set -x` in actie zien

Laten we set -x in actie bekijken. Let erop dat de shell elke opdracht na variabelexpansie afdrukt, voorafgegaan door een +-teken.

Voer dit voorbeeld uit:

#!/bin/bash

# Enable command tracing
set -x

NAME="Coddy"
MESSAGE="Hello, $NAME!"

echo $MESSAGE

# This command will intentionally fail
ls -l /nonexistent_directory

# Disable command tracing
set +x

echo "Tracing is now off."

Traceringuitvoer begrijpen

Wanneer set -x is ingeschakeld, ziet u regels die beginnen met het symbool +. Dit geeft traceringuitvoer aan.

  • Na de + staat de opdracht die Bash gaat uitvoeren, samen met de argumenten na eventuele variabele- of opdrachtvervangingen.
  • Dit is bijzonder nuttig om de exacte waarden van variabelen en de precieze opdracht die wordt uitgevoerd te zien.
  • Zo kunt u problemen opsporen, zoals onjuiste paden, lege variabelen of onbedoelde opdrachtstructuren.

Het bereik van `set -x` beheren

U hoeft niet altijd uw volledige script te traceren. U kunt set -x voor specifieke gedeelten inschakelen:

  • Gebruik set -x om tracering in te schakelen.
  • Gebruik set +x om tracering uit te schakelen.

Zo kunt u uw foutopsporingsinspanningen richten op problematische delen van uw script, zonder te worden overspoeld door uitvoer uit stabiele gedeelten.

Gebeurtenissen afhandelen met `trap`

Met de opdracht trap kunt u signalen en andere gebeurtenissen opvangen en vervolgens een opdracht uitvoeren wanneer deze zich voordoen. Dit is nuttig voor:

  • Opruimen: ervoor zorgen dat tijdelijke bestanden worden verwijderd.
  • Foutafhandeling: reageren op mislukte opdrachten.
  • Gecontroleerd afsluiten: gebruikersonderbrekingen zoals Ctrl+C afhandelen.

De basissyntaxis is trap 'command_to_execute' SIGNAL_OR_EVENT.

Opruimen met `trap EXIT`

Het pseudo-signaal EXIT is bijzonder. Een opdracht die met EXIT wordt onderschept, wordt uitgevoerd vlak voordat uw script eindigt, ongeacht de manier waarop het wordt afgesloten (succesvol, met een fout of door een onderbreking).

Dit is ideaal voor opruimtaken, zoals het verwijderen van tijdelijke bestanden. Voer dit script uit:

#!/bin/bash

TEMP_FILE="/tmp/coddy_temp_$(date +%s).txt"

# Trap the EXIT signal to remove the temp file
trap 'echo "Cleaning up: Removing $TEMP_FILE"; rm -f "$TEMP_FILE"' EXIT

echo "Script started. Creating temporary file..."
touch "$TEMP_FILE"
echo "Temporary file created: $TEMP_FILE"

# Simulate some work
sleep 2

echo "Script logic completed. Exiting..."

Fouten opvangen met `trap ERR`

Het pseudo-signaal ERR wordt geactiveerd wanneer een opdracht eindigt met een status die niet nul is (oftewel: wanneer de opdracht mislukt). Zo kunt u specifiek actie ondernemen wanneer er een fout optreedt.

Let op: trap ERR werkt alleen als de opdracht geen deel uitmaakt van een voorwaarde van if, while of until, en als de retourwaarde niet expliciet wordt gecontroleerd (bijvoorbeeld command || true).

#!/bin/bash

# Trap ERR to report the error line number
trap 'echo "Error detected on line $LINENO! Exiting."' ERR

echo "Starting script with an intentional error..."

# This command will fail and trigger the ERR trap
ls /this/path/does/not/exist

echo "This line will NOT be reached if an error occurs."

Reageren op signalen (INT, TERM)

Met trap kunt u ook standaard Linux-signalen opvangen. Veelgebruikte signalen zijn:

  • INT (onderbreken): wordt verzonden wanneer u op Ctrl+C drukt.
  • TERM (beëindigen): een verzoek om een proces gecontroleerd te beëindigen.

Door deze signalen op te vangen, kan uw script opruimen of de status opslaan voordat het wordt afgesloten, in plaats van abrupt te stoppen.

#!/bin/bash

# Trap INT (Ctrl+C) to exit gracefully
trap 'echo "\nCaught Ctrl+C! Exiting gracefully..."; exit 1' INT

echo "Running a continuous task. Press Ctrl+C to stop."

while true; do
  echo "Working... $(date)"
  sleep 3
done

Controle van uw foutopsporingskennis

Laten we controleren of u de technieken voor foutopsporing in Bash begrijpt.

Samenvatting: uw scripts debuggen

Goed gedaan! U hebt belangrijke hulpmiddelen geleerd om uw Bash-scripts te debuggen:

  • set -x: schakelt opdrachttracering in, zodat u precies ziet wat Bash uitvoert. Gebruik set +x om deze uit te schakelen.
  • trap: hiermee kunt u opdrachten uitvoeren als reactie op specifieke gebeurtenissen of signalen.
  • `trap EXIT`: zorgt ervoor dat opruimtaken worden uitgevoerd voordat het script eindigt.
  • `trap ERR`: vangt opdrachten op die eindigen met een status die niet nul is.
  • `trap INT`/`TERM`: handelt gebruikersonderbrekingen of beëindigingsverzoeken gecontroleerd af.

Als u deze technieken beheerst, kunt u problemen veel beter opsporen en robuuste Bash-scripts maken!

Gratis beginnen

Leer Bash 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
22
Lessen
88

Veelgestelde vragen

Is de les “Bash-scripts debuggen (set -x, trap)” gratis?

Ja — de volledige tekst van “Bash-scripts debuggen (set -x, trap)” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus De Linux-opdrachtregel en Bash-scripting beheersen wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus De Linux-opdrachtregel en Bash-scripting beheersen bevat in totaal 4 lessen.

Wat leer ik in “Bash-scripts debuggen (set -x, trap)”?

Ontdek methoden om uw Bash-scripts te debuggen, waaronder het volgen van de uitvoering en het gebruik van 'trap' voor foutafhandeling. Je oefent met De Linux-opdrachtregel en Bash-scripting beheersen 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 De Linux-opdrachtregel en Bash-scripting beheersen te beginnen?

Ervaring vooraf is niet nodig. De Linux-opdrachtregel en Bash-scripting beheersen 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 1 van 4.

Hoe lang duurt de les “Bash-scripts debuggen (set -x, trap)”?

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 De Linux-opdrachtregel en Bash-scripting beheersen?

Ja. Elke les over De Linux-opdrachtregel en Bash-scripting beheersen 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 De Linux-opdrachtregel en Bash-scripting beheersen