GNU/Linux >> Linux Esercitazione >  >> Linux

Come eseguire il debug di uno script Bash?

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.


Linux
  1. Come evidenziare gli script Bash in Vim?

  2. Come passare i parametri a uno script Bash?

  3. Come posso testare il mio script Bash su versioni precedenti di Bash?

  4. Come grep per unicode � in uno script bash

  5. Come aggiungere un timestamp al registro degli script bash?

Come eseguire uno script Bash {7 metodi}

Come scrivere uno script Bash con esempi

Come eseguire uno script Bash

Come posso controllare la sintassi di uno script Bash senza eseguirlo?

Come eseguire uno script bash?

Come si esegue il debug di un lavoro upstart?