[h]ShellCheck[/h]
https://www.wifi-libre.com/img/members/3/shellcheck_5.jpg
Antes de todo un saludo amistoso a nuestro amigo del espacio V1sitor quién me ha hecho conocer shellcheck.
Es un script relativamente reciente, de 2014, y que me hubiera venido como un guante en la mano cuando empecé a interesarme a bash.
Nunca es tarde para tomar buenas costumbres.
¡Te invito a usar shellcheck ya!
Bash, como todo tipo de lenguaje, evoluciona
Las ordenes y las sintaxis cambian.
Esto puede provocar errores que pueden “romper” el script.
Estos errores se notan enseguida ya que tenemos un “fail” de primera y el script se parra en modo “error” indicando la linea incriminada:
https://www.wifi-libre.com/img/members/3/shellcheck_1.jpg
Hay otros tipos de errores que no se ven.
El script funciona sin que se nota nada.
Pero están allí y pueden provocar raras tipo “buffer overflow” y provocar de vez en cuando unos crash del script muy difíciles de corregir (apuntarán al script y a bash en el log de error)
Lo has entendido: Shellcheck es un script que tiene la gran virtud de repasar nuestros scripts y apuntar a todos estos pequeños detalles que podrían generar problemas.
Y puedo decir mirando los códigos bash que circulan en nuestro mundillo (incluyendo los dos o tres míos) que haría falta une buena sesión intensiva de shellcheck a tod@s :lol:
Es normal: Si por ejemplo con las versiones antiguas de bash se usaba “seq” y que funciona, pues, lo sigues usando si no te enteras de que esta “abandonado”
[h]Instalando y probando shellcheck [/h]
Esta disponible desde los repositorios de varias distribuciones.
Para las distribuciones basadas en debian (Kali, Ubuntu etc…)
sudo apt-get install shellcheck
La sintaxis es muy simple y hay muy pocas opciones
https://www.wifi-libre.com/img/members/3/shellcheck_2.jpg
Analizo el script en el cuál he puesto un error de sintaxis para provocar un error.
La salida es mucho más completa que la salida error estándar en consola (ver primera captura del tema)
Se sugieren repuestas y pistas.
https://www.wifi-libre.com/img/members/3/shellcheck_3.jpg
Lo que he hecho es añadir un " para romper el código.
Tengo aquí muchos elementos para ver lo y entenderlo
Quito el error voluntario y ahora analizo el código que se ejecuta perfectamente y sin errores.
https://www.wifi-libre.com/img/members/3/shellcheck_4.jpg
Podéis ver que se usa un código de color para clasificar los errores.
Mi error rojo no se ve ejecutando el código, el bucle rula y cumple su función.
Nunca me hubiera enterrado…
Voy a darle un buen repaso a este código y dejarlo niquelado… ¡Gracias shellcheck!
[list=*]
]ShellCheck by Koalaman @ GitHub/]
[/list]