scripts script programas español ejemplos ejecutar como comando linux bash unix syntax gnu

linux - programas - scripts bash ejemplos



¿Cómo puedo comprobar la sintaxis de un script Bash sin ejecutarlo? (7)

¿Es posible verificar la sintaxis de un script bash sin ejecutarla?

Usando Perl, puedo ejecutar perl -c ''script name'' . ¿Hay algún comando equivalente para los scripts de bash?


De hecho, verifico todos los scripts de bash en el directorio actual para find errores de sintaxis SIN ejecutarlos usando la herramienta de find :

Ejemplo:

find . -name ''*.sh'' -exec bash -n {} /;

Si desea usarlo para un solo archivo, simplemente edite el comodín con el nombre del archivo.


El comando nulo [dos puntos] también es útil cuando se depura para ver el valor de la variable

set -x for i in {1..10}; do let i=i+1 : i=$i done set -


El tiempo lo cambia todo. Aquí hay un sitio web que proporciona la comprobación de sintaxis en línea para el script de shell.

He encontrado que es muy potente la detección de errores comunes.

Acerca de ShellCheck

ShellCheck es una herramienta de análisis y ShellCheck estática para scripts sh / bash. Se enfoca principalmente en el manejo de errores típicos de sintaxis de nivel principiante e intermedio y los escollos en los que el shell simplemente da un mensaje de error críptico o un comportamiento extraño, pero también informa sobre algunos problemas más avanzados donde los casos de esquina pueden causar fallos retrasados.

El código fuente de Haskell está disponible en GitHub!



También habilito la opción ''u'' en cada script de bash que escribo para hacer algunas comprobaciones adicionales:

set -u

Esto informará el uso de variables sin inicializar, como en el siguiente script ''check_init.sh''

#!/bin/sh set -u message=hello echo $mesage

Ejecutando el script:

$ check_init.sh

Se reportará lo siguiente:

./check_init.sh[4]: mesage: Parámetro no establecido.

Muy útil para capturar errores tipográficos.


bash -n scriptname

Quizás una advertencia obvia: esto valida la sintaxis pero no verificará si su script de bash intenta ejecutar un comando que no está en su ruta, como ech hello lugar de echo hello .


sh -n script-name

Ejecuta esto. Si hay algún error de sintaxis en el script, entonces devuelve el mismo mensaje de error. Si no hay errores, entonces sale sin dar ningún mensaje. Puede comprobar inmediatamente utilizando echo $? , que devolverá 0 confirmando exitosamente sin ningún error.

Me funcionó bien. Corrí en el sistema operativo Linux, Bash Shell.