Cómo realizar el modo de depuración de verificación de sintaxis en scripts de Shell

Cómo realizar el modo de depuración de verificación de sintaxis en scripts de Shell

Comenzamos la serie de depuración de scripts de shell explicando las diferentes opciones de depuración y cómo habilitar los modos de depuración de scripts de shell.

Después de escribir sus scripts de shell, se recomienda que verifiquemos prácticamente la sintaxis en los scripts antes de ejecutarlos, en lugar de mirar su salida para confirmar que están funcionando correctamente.

En esta parte de la serie, veremos cómo usar el modo de depuración de verificación de sintaxis. Recuerde que explicamos las diferentes opciones de depuración en la primera parte de esta serie y aquí las usaremos para realizar la depuración de scripts.

Habilitación del modo de depuración detallado

Antes de pasar al enfoque principal de esta guía, permítanos explore brevemente el modo detallado. Está habilitado por la opción de depuración-v, que le dice al shell que muestre todas las líneas en un script mientras se leen.

Para demostrar cómo funciona esto, a continuación se muestra un script de shell de muestra para convertir por lotes imágenes PNG a formato JPG.

freestar.config.enabled_slots.push

Escríbalo (o cópielo y péguelo) en un archivo.

#!/bin/bash #convert para imagen en *.png; convertir “$ imagen” “$ imagen%.png .jpg” echo “imagen $ imagen convertida a $ imagen%.png .jpg” terminado salir 0

Luego, guarde el archivo y haga que el script sea ejecutable usando el siguiente comando:

$ chmod + x script.sh

Podemos invocar el script y mostrar todas las líneas en él a medida que el shell las lee así:

$ bash-v script. sh  Mostrar todas las líneas en el script de Shell  Mostrar todas las líneas en el script de Shell Mostrar todas las líneas en el script de Shell Activando el modo de depuración de verificación de sintaxis en los scripts de Shell

Volviendo a nuestro tema de énfasis, La-n activa prueba el modo de comprobación de sintaxis. Le indica al shell que básicamente lea todos los comandos, sin embargo, no los ejecuta, solo examina la sintaxis utilizada.

En caso de que haya errores en su script de shell, el shell generará el errores en la terminal, de lo contrario, no muestra nada.

La sintaxis para activar la verificación de sintaxis es la siguiente:

$ bash-n script.sh

Porque la sintaxis en el script es correcta, el comando anterior no mostrará ningún resultado. Por lo tanto, intentemos eliminar la palabra terminada que cierra el bucle for y veamos si muestra un error:

A continuación se muestra el script de shell modificado para convertir por lotes imágene.png al formato jpg que contiene un error.

#!/bin/bash #script con un error #convert for image in *.png; convertir “$ imagen” “$ imagen%.png .jpg” echo “imagen $ imagen convertida a $ imagen%.png .jpg” salir 0

Guarde el archivo, luego ejecútelo mientras realiza la verificación de sintaxis en él:

$ bash-n script.sh  Verificar sintaxis en el script de Shell  Verificar sintaxis en el script de Shell Verificar sintaxis en Shell Script

De la salida anterior, podemos ver que hay un problema de sintaxis con nuestro script, al bucle for le falta una palabra clave de cierre. Y el shell lo buscó hasta el final del archivo y una vez que no lo encontró ( hecho. , el shell imprimió un error de sintaxis:

script.sh: línea 11: syntax error: final inesperado del archivo

También podemos combinar el modo detallado y el modo de verificación de sintaxis juntos:

$ bash-vn script.sh  Habilitar verificación detallada y de sintaxis en script  Habilitar verificación detallada y de sintaxis en la secuencia de comandos Habilitar verificación detallada y de sintaxis en la secuencia de comandos

Alternativamente, podemos habilitar la verificación de sintaxis modificando el primera línea de la s cript arriba como en el siguiente ejemplo.

#!/bin/bash-n. #alterando la primera línea de una secuencia de comandos para habilitar la comprobación de sintaxis #convertir imagen en *.png; convertir “$ imagen” “$ imagen%.png .jpg” echo “imagen $ imagen convertida a $ imagen%.png .jpg” salir 0

Como antes, guarde el archivo y ejecútelo mientras realiza comprobación de sintaxis:

$ ./script.sh script.sh: línea 12: error de sintaxis: final inesperado del archivo.

Además, podemos emplear el comando integrado set shell para habilitar el modo de depuración en el script anterior.

En el siguiente ejemplo, solo estamos verificando la sintaxis del bucle for en nuestro script.

#!/bin/bash #usando set shell built-in comando para habilitar la depuración #convert #enable debugging set-n para la imagen en *.png; convertir “$ imagen” “$ imagen%.png .jpg” echo “imagen $ imagen convertida a $ imagen%.png .jpg” #disable depurar conjunto + n salir 0

Una vez más, guarde el e invocar el script:

$ ./script.sh

En resumen, siempre debemos asegurarnos de comprobar sintácticamente nuestros scripts de shell para capturar cualquier error antes de ejecutarlos.

Para enviar Si tiene alguna pregunta o comentario sobre esta guía, utilice el formulario de respuesta a continuación. En la tercera parte de esta serie, pasaremos a explicar y usar el modo de depuración de rastreo de shell.