Bash
Depuración
Buscar..
Depurando un script bash con "-x"
Use "-x" para habilitar la salida de depuración de las líneas ejecutadas. Puede ejecutarse en una sesión o script completo, o habilitarse programáticamente dentro de un script.
Ejecutar un script con salida de depuración habilitada:
$ bash -x myscript.sh
O
$ bash --debug myscript.sh
Activa la depuración dentro de un script bash. Opcionalmente, se puede volver a activar, aunque la salida de depuración se restablece automáticamente cuando sale el script.
#!/bin/bash
set -x # Enable debugging
# some code here
set +x # Disable debugging output.
Comprobando la sintaxis de un script con "-n"
La marca -n le permite verificar la sintaxis de un script sin tener que ejecutarlo:
~> $ bash -n testscript.sh
testscript.sh: line 128: unexpected EOF while looking for matching `"'
testscript.sh: line 130: syntax error: unexpected end of file
Depurando usigh bashdb
Bashdb es una utilidad similar a gdb, ya que puede hacer cosas como establecer puntos de interrupción en una línea o en una función, imprimir contenido de variables, puede reiniciar la ejecución de scripts y más.
Normalmente puede instalarlo a través de su administrador de paquetes, por ejemplo en Fedora:
sudo dnf install bashdb
O conseguirlo desde la página de inicio . Luego puedes ejecutarlo con tu script como parámetro:
bashdb <YOUR SCRIPT>
Aquí hay algunos comandos para comenzar:
l - show local lines, press l again to scroll down
s - step to next line
print $VAR - echo out content of variable
restart - reruns bashscript, it re-loads it prior to execution.
eval - evaluate some custom command, ex: eval echo hi
b <line num> set breakpoint on some line
c - continue till some breakpoint
i b - info on break points
d <line #> - delete breakpoint at line #
shell - launch a sub-shell in the middle of execution, this is handy for manipulating variables
Para obtener más información, recomiendo consultar el manual: http://www.rodericksmith.plus.com/outlines/manuals/bashdbOutline.html
Véase también la página de inicio:
http://bashdb.sourceforge.net/