• Diese Seite verwendet Cookies. Indem du diese Website weiterhin nutzt, erklärst du dich mit der Verwendung von Cookies einverstanden. Erfahre mehr

debug shell script

thor-os

Active Member
Themenstarter #1
Hi,
ich versuche bareos zum laufen zu bringen. Aber die PostgreSQL
Version wird nicht erkannt. Aus dem Grund will ich das shell script debuggen aber -x und -v helfen nicht. Das script rennt bis zum Ende durch.

Mein system ist ein 11.2 freenas. Hat jemand eine Idee wie ich so ein shell script debuggen kann?
 
#2
Weder set -x noch -v macht ein "stepping" - wenn das die Frage war.
Das -x ergibt eine Menge output, den man halt lesen muss.

Ohne weiteren Output wird man nicht sagen koennen, warum die Version nicht erkannt wird.
 

Crest

rm -rf /*
Mitarbeiter
#3
Du kannst das Script mal mit -x und -e ausführen damit es beim ersten Fehler abbricht. Ich würde außerdem empfehlen für alles was du zusätzlich von FreeNAS willst Jails anzulegen.
 

thor-os

Active Member
Themenstarter #5
Ich habe eine Jail erstellt. Das Script heißt "create_bareos_database". In dem Script habe ich die folgenden Einträge eingefügt:
set -x
set -v

Ich möchte in etwa so debuggen, als wenn ich mit einer IDE arbeiten würde. Das scheint mit Bordmitteln nicht möglich zu sein.
 

SierraX

Well-Known Member
#6
Ich hab zwar schon ein weilchen kein Script mehr debuggt, meine mich aber erinnern zu können dass man ein "stepping" wie es @double-p gestern genannt hat auch da von Hand einbauen musste…
Wenn ich mich recht erinnere war das früher der befehl "pause" dass dann an der position einen weitern Tastendruck erwartete (kann aber sogar noch windows batch gewesen sein) jetzt und auf Unixoiden system wird das sowas wie "read" sein, in dem mann dann auch eigene Texte eintragen kann um ggf die Position in der Quelle wieder zu finden.
 

Yamagi

Possessed With Psi Powers
Mitarbeiter
#7
Willkommen in der wunderbaren Welt der Shellscripts. Das hilft dir nun nicht, aber genau solche Dinge sind einer Gründe, weshalb ich inzwischen der Meinung bin, dass man Shellscripts meiden soll... Wie @SierraX sagt, haben die gängigen Shells keinen integrierten Debugger, mit dem man das Script duchsteppen und sich Variablen ausgeben lassen kann. Der normale Weg ist tatsächlich sh -x um die gerade verarbeitete Zeile zu sehen, read um das Script an einer Stelle zu unterbrechen und echo zur Ausgabe von Variablen. Das kann man mit Aufwand durchaus schöner machen, trap ist da zum Beispiel sehr hilfreich.

Es könnte sein, dass @Kamikaze mal eine Bibliothek geschrieben hat, die eine Art Debugger implementiert. Aber vielleicht irre ich mich auch und es war nur eine Bibliothek zur Fehlerbehandlung.
 

Kamikaze

Warrior of Sunlight
#8
Es könnte sein, dass @Kamikaze mal eine Bibliothek geschrieben hat, die eine Art Debugger implementiert. Aber vielleicht irre ich mich auch und es war nur eine Bibliothek zur Fehlerbehandlung.
Nope, ich habe nur etwas Exception-artiges für mein Shell-Framework geschrieben.

Für meine unit tests habe ich etwas geschrieben, das in jede Zeile Code injiziert. Auf der Basis könnte ich eigentlich einen Debugger schreiben. Das ist keine schlechte Idee.