Zum Inhalt springen

Bash/Debug: Unterschied zwischen den Versionen

Aus Foxwiki
Keine Bearbeitungszusammenfassung
Zeile 78: Zeile 78:
</noinclude>
</noinclude>
= TMP =
= TMP =
== 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 <code>-x</code> zu 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 <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
{| class="wikitable"
|
|}
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
== 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 <code>kommentiertes-skript1.sh</code> bewirken wird, dann könnten wir ihn wie folgt in das Skript einschließen:
{| class="wikitable"
|
|}
Die Ausgabe sieht dann wie folgt aus:
{| class="wikitable"
|
|}
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'''
{| class="wikitable"
!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:
{| class="wikitable"
|
|}
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 <code>-xv</code>'''
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:
{| class="wikitable"
|
|}
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="wikitable"
|
|}
[[Kategorie:Bash/Scripting]]
[[Kategorie:Bash/Scripting]]

Version vom 11. Oktober 2025, 12:44 Uhr

Bash/Debug - Beschreibung

Beschreibung

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

Man-Page
  1. prep(1)


Links

Projekt

Weblinks


TMP