Tengo un script bash myscript.sh
, que tiene un montón de funciones internas. Para ejecutar una función, escribiría
source myscript.sh; myfunction
¿Cómo depurar tal función?
Respuesta1
Simplemente agregue estas líneas antes de la sección que desea depurar.
set -v -x -e
y para desactivarlo.
set +v +x +e
Respuesta2
habilite la depuración en su script y la depuración de salida para funciones con functrace
.
set -x
set -o functrace
Respuesta3
También deberías poder usar en Bash:
$ set -xT
que permite el seguimiento de funciones y
$ set +xT
deshabilitar.
Además, con referencia a otra respuesta publicada, no recomiendo usar -v para depurar (modo detallado) a menos que esté verificando la sintaxis de un script/conjunto de comandos de Shell. Otra solución (general) que a veces resulta útil es utilizar la -n
opción junto con -x
. Esto "ejecutará" un script/comandos sin realizar realmente el último paso de ejecutar un comando. Esto a menudo puede permitirle detectar errores difíciles en expansiones de shell y similares sin causar un caos no deseado.