Búsqueda de sitios web

Diez consejos útiles para escribir scripts Bash eficaces en Linux


Los scripts de Shell son la forma más sencilla de programación que puedes aprender/hacer en Linux. Más aún, es una habilidad necesaria para la administración de sistemas para automatizar tareas, desarrollar nuevas utilidades/herramientas simples, solo por mencionar algunas.

En este artículo, compartiremos 10 consejos útiles y prácticos para escribir scripts bash efectivos y confiables, que incluyen:

1. Utilice siempre comentarios en los scripts

Esta es una práctica recomendada que no sólo se aplica a los scripts de shell sino a todos los demás tipos de programación. Escribir comentarios en un guión le ayuda a usted o a cualquier otra persona que esté leyendo su guión a comprender qué hacen las diferentes partes del guión.

Para empezar, los comentarios se definen utilizando el signo #.

#TecMint is the best site for all kind of Linux articles

2. Realice una salida del script cuando falle

A veces, bash puede continuar ejecutando un script incluso cuando falla un determinado comando, lo que afecta al resto del script (puede eventualmente provocar errores lógicos). Utilice la siguiente línea para salir de un script cuando falla un comando:

#let script exit if a command fails
set -o errexit 
OR
set -e

3. Realice una salida de script cuando Bash utilice una variable no declarada

Bash también puede intentar utilizar un script no declarado que podría provocar un error lógico. Por lo tanto, utilice la siguiente línea para indicarle a bash que salga de un script cuando intente utilizar una variable no declarada:

#let script exit if an unsed variable is used
set -o nounset
OR
set -u

4. Utilice comillas dobles para hacer referencia a variables

El uso de comillas dobles al hacer referencia (usando un valor de una variable) ayuda a evitar la división de palabras (con respecto a los espacios en blanco) y el globbing innecesario (reconocer y expandir comodines).

Mira el siguiente ejemplo:

#!/bin/bash
#let script exit if a command fails
set -o errexit 

#let script exit if an unsed variable is used
set -o nounset

echo "Names without double quotes" 
echo
names="Tecmint FOSSMint Linusay"
for name in $names; do
        echo "$name"
done
echo

echo "Names with double quotes" 
echo
for name in "$names"; do
        echo "$name"
done

exit 0

Guarde el archivo y salga, luego ejecútelo de la siguiente manera:

./names.sh

5. Usar funciones en Scripts

Excepto en el caso de scripts muy pequeños (con unas pocas líneas de código), recuerde siempre utilizar funciones para modularizar su código y hacer que los scripts sean más legibles y reutilizables.

La sintaxis para escribir funciones es la siguiente:

function check_root(){
	command1; 
	command2;
}

OR
check_root(){
	command1; 
	command2;
}

Para código de una sola línea, use caracteres de terminación después de cada comando como este:

check_root(){ command1; command2; }

6. Utilice=en lugar de == para comparaciones de cadenas

Tenga en cuenta que == es sinónimo de =, por lo tanto, utilice únicamente un único = para comparaciones de cadenas, por ejemplo:

value1=”linux-console.net”
value2=”fossmint.com”
if [ "$value1" = "$value2" ]

7. Utilice $ (comando) en lugar del "comando" heredado para la sustitución

La sustitución de comandos reemplaza un comando con su salida. Utilice $ (command) en lugar de comillas `command` para la sustitución de comandos.

Esto lo recomienda incluso la herramienta Shellcheck (muestra advertencias y sugerencias para scripts de Shell). Por ejemplo:

user=`echo “$UID”`
user=$(echo “$UID”)

8. Utilice solo lectura para declarar variables estáticas

Una variable estática no cambia; su valor no se puede modificar una vez definido en un script:

readonly passwd_file=”/etc/passwd”
readonly group_file=”/etc/group”

9. Utilice nombres en mayúsculas para variables de ENTORNO y minúsculas para variables personalizadas

Todas las variables de entorno de bash se nombran con letras mayúsculas; por lo tanto, utilice letras minúsculas para nombrar sus variables personalizadas para evitar conflictos de nombres de variables:

#define custom variables using lowercase and use uppercase for env variables
nikto_file=”$HOME/Downloads/nikto-master/program/nikto.pl”
perl “$nikto_file” -h  “$1”

10. Realice siempre la depuración de scripts largos

Si escribe scripts bash con miles de líneas de código, encontrar errores puede convertirse en una pesadilla. Para arreglar cosas fácilmente antes de ejecutar un script, realice un poco de depuración. Domine este consejo leyendo las guías que se proporcionan a continuación:

  1. Cómo habilitar el modo de depuración de scripts de Shell en Linux
  2. Cómo realizar el modo de depuración de comprobación de sintaxis en scripts de Shell
  3. Cómo rastrear la ejecución de comandos en Shell Script con Shell Tracing

¡Eso es todo! ¿Tiene alguna otra práctica recomendada de secuencias de comandos bash para compartir? En caso afirmativo, utilice el formulario de comentarios a continuación para hacerlo.