2016-10-09 3 views
0

Ich arbeite an Best Practice für meine Bash-Skripte. An der Spitze jeder Datei, habe ich die folgende, so dass es beendet, wenn jeder Befehl einen Fehler erzeugt:Bash-Scripting: Protokollbefehle, die Fehler erzeugt haben?

set -o errexit 

Das Problem ist, es nicht mit Debugging hilft. Ich suche nach einer Möglichkeit, zu protokollieren, welcher Befehl fehlgeschlagen ist (d. H. Der Befehl und die Argumente, die ausgeführt wurden) und in welcher Zeile der Fehler aufgetreten ist und in welcher Datei.

Was ist ein guter Weg, dies zu tun? ZB durch eine kleine Reihe von Befehlen oben in jedem Bash-Skript? Vielleicht mit einer zentralen Datei, die für alle Skripte verwendet wird, um solche Fehler zu protokollieren? Was könnten diese Befehle sein?

Ist es auch eine gute Idee, das in jedes Skript zu schreiben, das es braucht? Oder sollte eine einzige Datei mit ihr source in jedes Skript, das es braucht, sein? Oder vielleicht gibt es einen anderen Weg?

+0

Setzen Sie 'set -x' an die Spitze. Dies zeigt alle Linien während ihrer Ausführung an. – Barmar

+1

Es gibt zumindest einige Fragen darüber, ob 'set -e' wirklich eine Best Practice ist, weil es Sie vielleicht dazu bringen kann, Fehlerbedingungen selbst zu verteilen und es funktioniert nicht immer wie erwartet. [siehe hier] (http://mywiki.wooledge.org/BashFAQ/105) zum Beispiel –

Antwort

1

Sie haben einige Optionen:

  • Gebrauch an der Spitze Ihrer script.sh Datei: #!/bin/bash -x
  • Verwenden set -x Option in script.sh
  • Verwendung -x von der Kommandozeile: bash -x script.sh
Verwandte Themen