GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo depurar un script Bash?

Estoy teniendo algunos problemas con algunos scripts en bash, sobre errores y comportamientos inesperados. Me gustaría investigar las causas de los problemas para poder aplicar correcciones. ¿Hay alguna manera de que pueda activar algún tipo de "modo de depuración" para bash, para obtener más información?

Respuesta aceptada:

Inicie su secuencia de comandos bash con bash -x ./script.sh o agregue en su secuencia de comandos set -x para ver la salida de depuración.

Adicional con bash 4.1 o posterior:

Si desea escribir la salida de depuración en un archivo separado, agregue esto a su secuencia de comandos:

exec 5> debug_output.txt
BASH_XTRACEFD="5"

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

Si desea ver los números de línea, agregue esto:

PS4='$LINENO: '

Si tiene acceso a logger entonces puede usar esto para escribir la salida de depuración a través de su syslog con la marca de tiempo, el nombre del script y el número de línea:

#!/bin/bash

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

# Place your code here

Puede usar la opción -p de logger Comando para configurar una instalación individual y un nivel para escribir la salida a través de syslog local en su propio archivo de registro.


Linux
  1. ¿Cómo establecer parámetros cuando Pipe Bash Script to Bash?

  2. ¿Cómo llamar a una función Bash en Bash Script dentro de Awk?

  3. Bash Script - Cómo leer la entrada del usuario

  4. Cómo incluir un archivo en un script de shell bash

  5. ¿Cómo agregar un trabajo crontab a crontab usando un script bash?

Cómo ejecutar un script Bash {7 métodos}

Cómo escribir un script Bash con ejemplos

Cómo ejecutar un script Bash

Cómo dividir una cadena en Bash Script

¿Cómo verifico la sintaxis de un script Bash sin ejecutarlo?

¿Cómo agregar una marca de tiempo al registro de script bash?