Para todos los niveles de experiencia en scripting, Shellcheck realiza una comprobación de estándar POSIX, posibles problemas en expansión de variables, variables no utilizadas, errores sintácticos o en construcciones lógicas (como bucles for/while o condicionales if) etc… Proporcionando también sugerencias para lograr una mayor robustez del código de nuestros scripts.
Podemos instalarlo en las principales distros:
# Debian y derivadas apt-get install shellcheck # ArchLinux pacman -S shellcheck # RHEL y derivadas (necesario repositorio EPEL) yum -y install epel-release yum install ShellCheck # OpenSuse zypper in ShellCheck
También está disponible en versión web e incluso como plugin para Atom o Sublime Text.
Su uso es muy sencillo. Desde terminal ejecutamos shellcheck
seguido del script que queremos analizar. Veamos algunos ejemplos:
Script test1, contiene una única línea:
echo "Esto es un test"
Ejecutando shellcheck test1
nos avisará de que no tenemos especificado con shebang para determinar el tipo de shell en la que se ejecuta el script:
Script test2, contiene una cláusula if
no cerrada correctamente:
#!/bin/bash if [ "$#" -eq 0 ];then echo "Probando"
Analizamos con shellcheck test2
:
Script test3, con una variable que no expande correctamente en un echo literal ''
:
#!/bin/bash variable="0" echo '$variable' if [ $variable -eq 0 ];then echo "La variable es 0" fi
Si comprobamos obtenemos:
Script test4, variable no expandida correctamente en la condición de un bucle while:
#!/bin/bash i="0" while [ i -lt 8 ] do echo "$i" let "i++" done
Tenemos:
Los códigos de error generados pueden ser consultados en la Wiki del proyecto. Por ejemplo para SC2148 o SC2170.
Tenéis todos los métodos de instalación, uso y ejemplos en el repositorio del proyecto en GitHub.