Sto riscontrando alcuni problemi con alcuni script in bash, su errori e comportamenti imprevisti. Vorrei indagare sulle cause dei problemi in modo da poter applicare correzioni. C'è un modo per attivare una sorta di "modalità di debug" per bash, per ottenere maggiori informazioni?
Risposta accettata:
Avvia il tuo script bash con bash -x ./script.sh
oppure aggiungi nel tuo script set -x
per vedere l'output di debug.
Aggiuntivo con bash
4.1 o successivo:
Se vuoi scrivere l'output di debug in un file separato, aggiungi questo al tuo script:
exec 5> debug_output.txt
BASH_XTRACEFD="5"
Vedi:https://stackoverflow.com/a/25593226/3776858
Se vuoi vedere i numeri di riga aggiungi questo:
PS4='$LINENO: '
Se hai accesso a logger
comando quindi puoi usarlo per scrivere l'output di debug tramite il tuo syslog con timestamp, nome dello script e numero di riga:
#!/bin/bash
exec 5> >(logger -t $0)
BASH_XTRACEFD="5"
PS4='$LINENO: '
set -x
# Place your code here
Puoi usare l'opzione -p
di logger
comando per impostare una singola struttura e livello per scrivere l'output tramite syslog locale nel proprio file di registro.