Wie debugge ich Bash-Abschlüsse?

14

Ich habe einige Bash-Vervollständigungsfunktionen erstellt, die alle isoliert zu funktionieren scheinen, aber unerwartete Ergebnisse liefern, wenn ich versuche, die Registerkarte mit ihnen zu vervollständigen.

Ist es möglich, bashdb zu verbinden, dann zu versuchen, etwas zu vervollständigen und durchzugehen, um zu debuggen und festzustellen, was falsch läuft?

Dan Midwood
quelle
2
Nur um meine Cent hinzuzufügen: Sie sollten die set -xIn-Bash verwenden, um Ihre Skripte zu debuggen. Verwenden Sie set +xzu deaktivieren.

Antworten:

6

set -x

Wenn Sie sich set -xentweder in der interaktiven Sitzung oder im Autocomplete-Skript selbst befinden, werden (fast?) Jeder Befehl und seine Ergebnisse ausgedruckt. Dies schließt die Arbeit ein, die im Autocomplete-Skript ausgeführt wird.

Dies kann dann wieder mit beruhigt werden set +x.

-x

Zeigen Sie nach dem Erweitern jedes einfachen Befehls für Befehl, case-Befehl, Auswahlbefehl oder Arithmetik für Befehl den erweiterten Wert von PS4 an, gefolgt vom Befehl und seinen erweiterten Argumenten oder der zugehörigen Wortliste.

-aus Bash Handbuch #Das Set Builtin

Christopher Peterson
quelle
2

Protokollieren / geben Sie einfach die Bash-Abschlussfunktionen aus. Da es sich höchstwahrscheinlich nicht um eine Raketenwissenschaft handelt, sollte dies ziemlich einfach sein. Es könnte möglich sein, bashdb zu verbinden, aber es fühlt sich unnötig an ...

Tamara Wijsman
quelle
Das Verbinden von bashdb wäre viel einfacher und schneller gewesen als das Hinzufügen von Protokollanweisungen zu den Skripten. Ich weiß jedoch nicht, ob es möglich ist, und das Fehlen von Antworten würde darauf hindeuten, dass dies nicht der Fall ist. Ich habe es geschafft, mein Problem zu lösen, indem ich den Status in einer Datei protokolliert habe, wie Sie es vorgeschlagen haben. Die Ausgabe von Protokollinformationen an das Terminal ist jedoch nicht hilfreich, wenn Sie mit Vervollständigungen arbeiten.
Dan Midwood
3
@DanMidwood: Verwenden Sie zwei Terminals (z. B. Bildschirm + Split). Führen Sie in einem die Fertigstellung aus, im zweiten tail -fdas Protokoll.
Choroba
@ Choroba: Schön. : D
Tamara Wijsman