10 consejos útiles para escribir scripts de Bash efectivos en Linux


Los scripts de shell son la forma más sencilla de programación que puede aprender/hacer en Linux. Más aún, es una habilidad requerida para la administración del sistema para automatizar tareas, desarrollando nuevas herramientas/utilidades simples, solo por mencionar algunas.

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

1. Siempre use comentarios en scripts

Esta es una práctica recomendada que no solo se aplica a los scripts de shell sino a todos los otros tipos de programación. Escribir comentarios en una secuencia de comandos lo ayuda a usted o a otra persona que pasa por la secuencia de comandos a comprender qué hacen las diferentes partes de la secuencia de comandos.

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

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

2. Hacer una salida de script cuando falla

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

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

3. Haga una salida de script cuando Bash use una variable no declarada

Bash también puede tratar de usar un script no declarado que podría causar un error lógico. Por lo tanto, use la siguiente línea para indicar a bash que salga de un script cuando intente usar una variable no declarada:

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

4. Usa comillas dobles para hacer referencia a variables

El uso de comillas dobles al hacer referencia (usar el valor de una variable) ayuda a evitar la división de palabras (con respecto al espacio en blanco) y el uso de espacios innecesarios (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 los scripts muy pequeños (con unas pocas líneas de código), recuerde siempre usar las 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 el código de una sola línea, use caracteres de terminación después de cada comando de esta manera:

check_root(){ command1; command2; }

6. Use = en lugar de == para las comparaciones de cadenas

Tenga en cuenta que == es un sinónimo de = , por lo tanto, solo use un solo = para las comparaciones de cadenas, por ejemplo:

value1=”tecmint.com”
value2=”fossmint.com”
if [ "$value1" = "$value2" ]

7. Usar en lugar del "comando" legado para la sustitución

La sustitución de comandos reemplaza un comando con su salida. Use & # 36 (command) en lugar de backquotes para sustituir comandos

Esto se recomienda incluso con la herramienta shellcheck (muestra advertencias y sugerencias para los 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 que se define en un script:

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

9. Utilice los nombres en mayúsculas para las variables de MEDIO AMBIENTE y en minúsculas para las variables personalizadas

Todas las variables de entorno de bash se nombran con letras mayúsculas, por lo tanto, use 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. Siempre realice la depuración de secuencias de comandos largas

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

  1. How To Enable Shell Script Debugging Mode in Linux
  2. How to Perform Syntax Checking Debugging Mode in Shell Scripts
  3. How to Trace Execution of Commands in Shell Script with Shell Tracing

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