Ich habe ein Bash-Skript myscript.sh
, das eine Reihe von Funktionen enthält. Um eine Funktion auszuführen, würde ich schreiben
source myscript.sh; myfunction
Wie debuggen Sie eine solche Funktion?
Antwort1
Fügen Sie diese Zeile einfach vor dem Abschnitt hinzu, den Sie debuggen möchten.
set -v -x -e
und es zu deaktivieren.
set +v +x +e
Antwort2
Aktivieren Sie das Debuggen in Ihrem Skript und geben Sie das Debuggen für Funktionen mit aus functrace
.
set -x
set -o functrace
Antwort3
Sie sollten in Bash auch Folgendes verwenden können:
$ set -xT
das die Funktionsverfolgung ermöglicht und
$ set +xT
Etwas deaktivieren.
Außerdem empfehle ich in Bezug auf eine andere gepostete Antwort nicht, -v zum Debuggen (ausführlicher Modus) zu verwenden, es sei denn, Sie überprüfen die Syntax eines Skripts/einer Reihe von Shell-Befehlen. Eine andere (allgemeine) Lösung, die manchmal nützlich ist, ist die Verwendung der -n
Option in Verbindung mit -x
. Dadurch wird ein Skript/Befehl „ausgeführt“, ohne dass der letzte Schritt der Ausführung eines Befehls tatsächlich ausgeführt wird. Dadurch können Sie oft schwierige Fehler in Shell-Erweiterungen und dergleichen erkennen, ohne unerwünschtes Chaos zu verursachen.