Cómo depurar un script de shell?

Cómo depurar un script de shell?

La depuración es el proceso de encontrar y resolver errores dentro de un programa de computadora. Proporciona una gran salida en el tiempo de ejecución para analizar cada parte de la ejecución. Que ayuda a identificar la causa raíz de cualquier error en el script. En este tutorial, aprenderá a depurar un script de shell en la línea de comandos de Linux.

Podemos depurar un script de shell de dos maneras. Agregue la instrucción de depuración en el script de shell usando "Establecer -xv" o usar -xv en línea de comando mientras ejecuta script.

Agregar instrucciones de depuración en shell script

Creemos un pequeño script para probar el proceso de depuración. Cree un nuevo archivo y edite en el editor de texto:

nano checkdebug.mierda  

Agregue el siguiente contenido al archivo:

#!/bin/bash set -xv # esto habilitará la depuración CD/var/log/para i en "*.log "; do du -sh $ lo hice
1234567#!/bin/bash set -xv # esto habilitará debugcd/var/log/para i en "*.log "; do du -sh $ idone

Guardar cambios y cerrar el archivo.

A continuación, establezca los permisos de ejecución en el archivo y luego ejecútelo.

chmod +x checkdebug.mierda  ./checkdebug.mierda  

[Salida de muestra]

CD/VAR/LOG/ + CD/VAR/LOG/FOR I IN "*.log "; do du -sh $ i hice + para i in '"*.log "' + du -sh boot.registrar mysqld.Registro post111.Registro post1121.log yum.Log 0 Boot.log 32k mysqld.Registro 0 Post111.Registro 0 Post1121.registro 4.0K yum.registro 

Proporcionar instrucciones de depuración desde la línea de comandos

Usando esta opción no necesitamos agregar "set -xv" en shell script. Simplemente cree un script de shell como a continuación

nano checkdebug2.mierda  
#!/bin/bash cd/var/log/para i en "*.log "; do du -sh $ lo hice
123456#!/bin/bash cd/var/log/para i en "*.log "; do du -sh $ idone

y ejecutar como abajo

sh -xv checkDebug2.mierda  

[Salida de muestra]

#!/bin/bash cd/var/log/ + cd/var/log/for i in "*.log "; do du -sh $ i hice + para i in '"*.log "' + du -sh boot.registrar mysqld.Registro post111.Registro post1121.log yum.Log 0 Boot.log 32k mysqld.Registro 0 Post111.Registro 0 Post1121.registro 4.0K yum.registro