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.





