Bash/Debug: Unterschied zwischen den Versionen
K Textersetzung - „wikitable“ durch „table table-striped table-hover“ |
|||
| (5 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 12: | Zeile 12: | ||
Dies ist das <code>kommentierte-script1.sh</code> Skript, das im Debug-Modus ausgeführt wird | Dies ist das <code>kommentierte-script1.sh</code> Skript, das im Debug-Modus ausgeführt wird | ||
* Beachten Sie auch hier, dass die hinzugefügten Kommentare in der Ausgabe des Skripts nicht sichtbar sind | * Beachten Sie auch hier, dass die hinzugefügten Kommentare in der Ausgabe des Skripts nicht sichtbar sind | ||
{| class=" | {| class="table table-striped table-hover" | ||
| | | | ||
|} | |} | ||
| Zeile 22: | Zeile 22: | ||
Mit dem '''set''' der Bash können Sie die Teile des Skripts, von denen Sie sicher sind, dass sie fehlerfrei sind, im normalen Modus ausführen und nur für problematische Bereiche Debugging-Informationen anzeigen | Mit dem '''set''' der Bash können Sie die Teile des Skripts, von denen Sie sicher sind, dass sie fehlerfrei sind, im normalen Modus ausführen und nur für problematische Bereiche Debugging-Informationen anzeigen | ||
* Angenommen, wir sind uns nicht sicher, was der '''w'''-Befehl im Beispiel <code>kommentiertes-skript1.sh</code> bewirken wird, dann könnten wir ihn wie folgt in das Skript einschließen: | * Angenommen, wir sind uns nicht sicher, was der '''w'''-Befehl im Beispiel <code>kommentiertes-skript1.sh</code> bewirken wird, dann könnten wir ihn wie folgt in das Skript einschließen: | ||
{| class=" | {| class="table table-striped table-hover" | ||
| | | | ||
|} | |} | ||
Die Ausgabe sieht dann wie folgt aus: | Die Ausgabe sieht dann wie folgt aus: | ||
{| class=" | {| class="table table-striped table-hover" | ||
| | | | ||
|} | |} | ||
| Zeile 34: | Zeile 34: | ||
'''Tabelle 2-1. Übersicht der eingestellten Debugging-Optionen''' | '''Tabelle 2-1. Übersicht der eingestellten Debugging-Optionen''' | ||
{| class=" | {| class="table table-striped table-hover" | ||
!Kurze Schreibweise | !Kurze Schreibweise | ||
!Lange Schreibweise | !Lange Schreibweise | ||
| Zeile 55: | Zeile 55: | ||
Im folgenden Beispiel werden diese Optionen in der Befehlszeile demonstriert: | Im folgenden Beispiel werden diese Optionen in der Befehlszeile demonstriert: | ||
{| class=" | {| class="table table-striped table-hover" | ||
| | | | ||
|} | |} | ||
| Zeile 65: | Zeile 65: | ||
Wenn Sie den fehlerhaften Teil Ihres Skripts gefunden haben, können Sie '''echo'''-Anweisungen vor jedem Befehl einfügen, bei dem Sie unsicher sind, so dass Sie genau sehen, wo und warum etwas nicht funktioniert | Wenn Sie den fehlerhaften Teil Ihres Skripts gefunden haben, können Sie '''echo'''-Anweisungen vor jedem Befehl einfügen, bei dem Sie unsicher sind, so dass Sie genau sehen, wo und warum etwas nicht funktioniert | ||
* Im Beispielskript <code>commented-script1.sh</code> könnte man das so machen, wobei man immer noch davon ausgeht, dass die Anzeige der Benutzer Probleme macht: | * Im Beispielskript <code>commented-script1.sh</code> könnte man das so machen, wobei man immer noch davon ausgeht, dass die Anzeige der Benutzer Probleme macht: | ||
{| class=" | {| class="table table-striped table-hover" | ||
| | | | ||
|} | |} | ||
In fortgeschritteneren Skripten kann das '''echo''' eingefügt werden, um den Inhalt von Variablen in verschiedenen Phasen des Skripts anzuzeigen, so dass Fehler aufgedeckt werden können: | In fortgeschritteneren Skripten kann das '''echo''' eingefügt werden, um den Inhalt von Variablen in verschiedenen Phasen des Skripts anzuzeigen, so dass Fehler aufgedeckt werden können: | ||
{| class=" | {| class="table table-striped table-hover" | ||
| | | | ||
|} | |} | ||
| Zeile 82: | Zeile 82: | ||
=== Optionen === | === Optionen === | ||
{| class=" | {| class="table table-striped table-hover sortable options gnu big" | ||
|- | |- | ||
! Unix !! GNU !! Parameter !! Beschreibung | ! Unix !! GNU !! Parameter !! Beschreibung | ||
| Zeile 93: | Zeile 93: | ||
=== Umgebungsvariablen === | === Umgebungsvariablen === | ||
=== Exit-Status === | === Exit-Status === | ||
{| class=" | {| class="table table-striped table-hover options col1center big" | ||
|- | |- | ||
! Wert !! Beschreibung | ! Wert !! Beschreibung | ||
| Zeile 99: | Zeile 99: | ||
| 0 || Erfolg | | 0 || Erfolg | ||
|- | |- | ||
| >0 | | >0 || Fehler | ||
|} | |} | ||
| Zeile 110: | Zeile 110: | ||
== Konfiguration == | == Konfiguration == | ||
=== Dateien === | === Dateien === | ||
{| class=" | {| class="table table-striped table-hover options big" | ||
|- | |- | ||
! Datei !! Beschreibung | ! Datei !! Beschreibung | ||
| Zeile 130: | Zeile 130: | ||
=== Dokumentation === | === Dokumentation === | ||
<!-- | |||
; Man-Page | ; Man-Page | ||
# [https://manpages.debian.org/stable/procps/pgrep.1.de.html prep(1)] | # [https://manpages.debian.org/stable/procps/pgrep.1.de.html prep(1)] | ||
; Info-Pages | ; Info-Pages | ||
--> | --> | ||
| Zeile 141: | Zeile 141: | ||
==== Weblinks ==== | ==== Weblinks ==== | ||
[[Kategorie:Bash/Scripting]] | |||
[[Kategorie: | |||
</noinclude> | </noinclude> | ||
Aktuelle Version vom 29. Juli 2026, 10:53 Uhr
Bash/Debug - Beschreibung
Beschreibung
Gesamtes Skript
- Debugging für das gesamte Skript
Wenn die Dinge nicht nach Plan laufen, müssen Sie herausfinden, was genau die Ursache für das Scheitern des Skripts ist
- Die Bash bietet umfangreiche Debugging-Funktionen
- Die gebräuchlichste ist, die Subshell mit der Option
-xzu starten, wodurch das gesamte Skript im Debug-Modus ausgeführt wird - Die Spuren der einzelnen Befehle und ihrer Argumente werden auf der Standardausgabe ausgegeben, nachdem die Befehle expandiert wurden, aber bevor sie ausgeführt werden
Dies ist das kommentierte-script1.sh Skript, das im Debug-Modus ausgeführt wird
- Beachten Sie auch hier, dass die hinzugefügten Kommentare in der Ausgabe des Skripts nicht sichtbar sind
Es gibt jetzt einen vollwertigen Debugger für die Bash, der bei SourceForge verfügbar ist
- Diese Debugging-Funktionen sind in den meisten modernen Versionen der Bash ab 3.x verfügbar
Teile eines Skripts
- Debugging für Teile des Skripts
Mit dem set der Bash können Sie die Teile des Skripts, von denen Sie sicher sind, dass sie fehlerfrei sind, im normalen Modus ausführen und nur für problematische Bereiche Debugging-Informationen anzeigen
- Angenommen, wir sind uns nicht sicher, was der w-Befehl im Beispiel
kommentiertes-skript1.shbewirken wird, dann könnten wir ihn wie folgt in das Skript einschließen:
Die Ausgabe sieht dann wie folgt aus:
Sie können den Debugging-Modus innerhalb desselben Skripts beliebig oft ein- und ausschalten
Die folgende Tabelle gibt einen Überblick über weitere nützliche Bash-Optionen:
Tabelle 2-1. Übersicht der eingestellten Debugging-Optionen
| Kurze Schreibweise | Lange Schreibweise | Ergebnis |
|---|---|---|
| set -f | set -o noglob | Deaktiviert die Generierung von Dateinamen mit Metazeichen (Globbing) |
| set -v | set -o verbose | Druckt Shell-Eingabezeilen aus, wenn sie gelesen werden |
| set -x | set -o xtrace | Druckt Befehlsspuren vor der Ausführung des Befehls |
Der Bindestrich wird verwendet, um eine Shell-Option zu aktivieren und ein Plus, um sie zu deaktivieren
- Lassen Sie sich davon nicht verwirren!
Im folgenden Beispiel werden diese Optionen in der Befehlszeile demonstriert:
Alternativ können diese Modi auch im Skript selbst angegeben werden, indem die gewünschten Optionen in der ersten Zeile der Shell-Deklaration hinzugefügt werden
- Optionen können kombiniert werden, wie es bei UNIX-Befehlen üblich ist:
#!/bin/bash -xv
Wenn Sie den fehlerhaften Teil Ihres Skripts gefunden haben, können Sie echo-Anweisungen vor jedem Befehl einfügen, bei dem Sie unsicher sind, so dass Sie genau sehen, wo und warum etwas nicht funktioniert
- Im Beispielskript
commented-script1.shkönnte man das so machen, wobei man immer noch davon ausgeht, dass die Anzeige der Benutzer Probleme macht:
In fortgeschritteneren Skripten kann das echo eingefügt werden, um den Inhalt von Variablen in verschiedenen Phasen des Skripts anzuzeigen, so dass Fehler aufgedeckt werden können:
Installation
Aufruf
Optionen
| Unix | GNU | Parameter | Beschreibung |
|---|---|---|---|
Parameter
Umgebungsvariablen
Exit-Status
| Wert | Beschreibung |
|---|---|
| 0 | Erfolg |
| >0 | Fehler |
Anwendung
Problembehebung
Konfiguration
Dateien
| Datei | Beschreibung |
|---|---|
Anhang
Siehe auch
Dokumentation
Links
Projekt
Weblinks