Tutoriales

Cómo instalar ShellCheck en FreeBSD – utensilio de observación de scripts de shell

ShellCheck es una utensilio de observación inmóvil de código extenso, gratuita y obediente de usar que encuentra automáticamente errores en sus scripts de shell. Si escribe scripts de shell para automatización o contenedores, necesita esta utensilio. Veamos cómo instalar y usar ShellCheck en el servidor Unix de incremento de FreeBSD.

ShellCheck publicado bajo GPLv3. Podemos instalarlo usando un administrador de paquetes. Igualmente funciona como un linter integrado en editores de código notables. La utensilio ShellCheck está escrita en el lengua de programación Haskell. Como estoy usando FreeBSD, voy a instalar y usar ShellCheck en los sistemas operativos FreeBSD. Broa la aplicación de terminal y luego escriba los siguientes comandos.



Instalación de ShellCheck en el sistema FreeBSD

Primero, actualice todos los paquetes en FreeBSD aplicando actualizaciones de seguridad usando pkg / freebsd-update:
sudo pkg update
sudo pkg upgrade

Despabilarse ShellCheck

Escriba el ulterior comando pkg:
sudo pkg search shellcheck
Permítanos encontrar información sobre el paquete en su caja de FreeBSD usando el comando cat:
cat /usr/ports/devel/hs-ShellCheck/pkg-descr

The goals of ShellCheck are:
 
 * To point out and clarify typical beginner's syntax issues, that causes
   a shell to give cryptic error messages.
 
 * To point out and clarify typical intermediate level semantic problems,
   that causes a shell to behave strangely and counter-intuitively.
 
 * To point out subtle caveats, corner cases and pitfalls, that may cause
   an advanced user's otherwise working script to fail under future
   circumstances.
 
WWW: https://www.shellcheck.net/

Instalación

Todo lo que tienes que hacer es:
sudo pkg install hs-ShellCheck
## OR use FreeBSD ports ##
cd /usr/ports/devel/hs-ShellCheck/
make install clean

Las notas de instalación específicas de Linux están aquí.

Ejemplos de

Lógicamente, necesita un script de shell para probar y usar ShellCheck. Tenga en cuenta que esta utensilio de linting se creó solo para scripts sh / bash. Se centra principalmente en el manejo de errores de sintaxis típicos de nivel principiante e intermedio. Proporcionará sugerencias para errores comunes en los que el shell da un mensaje de error críptico. Podemos corregir un comportamiento extraño en nuestro código, pero todavía informa sobre algunos problemas más avanzados en los que los casos de cúspide pueden causar fallas retrasadas.

¿Cómo uso ShellCheck en FreeBSD o en un sistema similar a Unix?

Considere el ulterior script de shells:

#/bin/sh
. /home/scripts/.keychain/aws-ec2-server42-keys-sh
[ "$1" != "" ] && /usr/lugar/bin/rsnapshot "$1" || cmontly

Ejecútelo de la ulterior forma:
shellcheck sshlogin
shellcheck -x sshlogin

Esto es lo que vemos:

In sshlogin line 1:
#/bin/sh
 ^-- SC1113: Use #!, not just #, for the shebang.
 
 
In sshlogin line 2:
. /home/scripts/.keychain/aws-ec2-server42-keys-sh
  ^-- SC1091: Not following: /root/.keychain/nixcraft-m6700-sh was not specified as input (see shellcheck -x).
 
 
In sshlogin line 3:
[ "$1" != "" ] && /usr/lugar/bin/rsnapshot "$1" || eyearly]"; exit 999; 
               ^-- SC2015: Note that A && B || C is not if-then-else. C may run when A is true.
                                                                                                                     ^-^ SC2242: Can only exit with status -255. Other data should be written to stdout/stderr.
 
For more information:
  https://www.shellcheck.net/wiki/SC1113 -- Use #!, not just #, for the sheba...
  https://www.shellcheck.net/wiki/SC2242 -- Can only exit with status -255. ...
  https://www.shellcheck.net/wiki/SC1091 -- Not following: /root/.keychain/ni...

Ah, arreglemos la andana # 1:
vim +1 sshlogin
Actualícelo de la ulterior forma:

#!/bin/sh

Guarde y candado el archivo en el editor de texto vim / vi. Vuelve a intentarlo:
shellcheck sshlogin
shellcheck -x sshlogin

Aquí se corrigió el código de muestra:

#!/bin/sh
. /home/scripts/.keychain/aws-ec2-server42-keys-sh
if [ "$1" != "" ]
then
     /usr/lugar/bin/rsnapshot "$1"
else
     echo "Usage: $0 [ahourly|bdaily|cmontly|dweekly|eyearly]"
     exit 1
fi

Pruébelo de nuevo:
shellcheck sshlogin
shellcheck -x sshlogin

Mira ma, no más errores, y otros problemas. Mi secuencia de comandos ahora es más inteligible y está rescatado de errores. los -X sigue las declaraciones de origen incluso cuando el archivo no se especifica como entrada. De forma predeterminada, shellcheck solo seguirá los archivos especificados en la andana de comando (más / dev / null). Esta opción permite seguir cualquier archivo que pueda obtener el script.

Cómo suprimir SC1118 sobre el here-doc

Usamos la ulterior sintaxis:
# shellcheck disable={NUMBER_HERE}
Por ejemplo:

# shellcheck disable=SC1118
cat << "eof"
Foo
bar
eof▭

Cómo configurar el dialecto de la concha

Podemos establecer el dialecto de la concha de Bourne. Los títulos válidos son sh, bash, dash y ksh. La sintaxis es:
shellcheck -s bash myscript
shellcheck -s ksh /path/to/myscript

Igualmente es posible configurar la variable de entorno cuando necesite indicadores predeterminados:

export SHELLCHECK_OPTS='--shell=dash --exclude=SC1118,SC1119'
shellcheck awesome.script.sh

Podemos ajustar el color de la ulterior forma:
shellcheck --color=never s3.sh

Usé el comando bat (sobrenombre del astuto) para producir una salida coloreada para el script de muestra.

Resumiendo

Eso es todo por ahora. Shellcheck tiene muchas más opciones. Verifique la página del manual y vea la página de inicio del plan:
man shellcheck
Espero que este sencillo y útil consejo te ayude a escribir mejores guiones.



LEER  Servidor HTTP y WebDAV con Net-NTLM

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

Botón volver arriba