GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie debuggt man ein Bash-Skript?

Ich habe einige Probleme mit einigen Skripten in Bash, mit Fehlern und unerwartetem Verhalten. Ich möchte die Ursachen der Probleme untersuchen, damit ich Korrekturen anwenden kann. Gibt es eine Möglichkeit, eine Art „Debug-Modus“ für Bash einzuschalten, um mehr Informationen zu erhalten?

Akzeptierte Antwort:

Starten Sie Ihr Bash-Skript mit bash -x ./script.sh oder fügen Sie in Ihrem Skript set -x hinzu um die Debug-Ausgabe zu sehen.

Zusätzlich mit bash 4.1 oder höher:

Wenn Sie die Debug-Ausgabe in eine separate Datei schreiben möchten, fügen Sie dies Ihrem Skript hinzu:

exec 5> debug_output.txt
BASH_XTRACEFD="5"

Siehe:https://stackoverflow.com/a/25593226/3776858

Wenn Sie Zeilennummern sehen möchten, fügen Sie Folgendes hinzu:

PS4='$LINENO: '

Wenn Sie Zugriff auf logger haben Befehl, dann können Sie dies verwenden, um Debug-Ausgaben über Ihr Syslog mit Zeitstempel, Skriptname und Zeilennummer zu schreiben:

#!/bin/bash

exec 5> >(logger -t $0)
BASH_XTRACEFD="5"
PS4='$LINENO: '
set -x

# Place your code here

Sie können die Option -p verwenden von logger Befehl zum Festlegen einer individuellen Einrichtung und Ebene zum Schreiben von Ausgaben über lokales Syslog in eine eigene Protokolldatei.


Linux
  1. Wie kann man Bash-Skripte in Vim hervorheben?

  2. Wie übergebe ich Parameter an ein Bash-Skript?

  3. Wie kann man das Bash-Skript alle N Sekunden wiederholt ausführen?

  4. Wie füge ich einen Crontab-Job mit einem Bash-Skript zu Crontab hinzu?

  5. Wie führt man ein Bash-Skript aus?

So führen Sie ein Bash-Skript aus {7 Methoden}

So schreiben Sie ein Bash-Skript mit Beispielen

So führen Sie ein Bash-Skript aus

Wie überprüfe ich die Syntax eines Bash-Skripts, ohne es auszuführen?

Wie man Python-Skript mit Bash-Skript beendet

Wie man in einem Bash-Skript nach Unicode sucht