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.
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 -xom tracering in te schakelen. - Gebruik
set +xom 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 opCtrl+Cdrukt.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
doneControle 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. Gebruikset +xom 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!
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
- Bash-scripts debuggen (set -x, trap)
- Foutafhandeling en afsluitstatus
- Best practices voor scripting en linting
- Bash-scripts testen met Bats