Cómo escribir scripts bash correctamente

Actualizado el domingo, 19 enero, 2020

Cómo escribir scripts bash correctamente.

Los scripts bash son la forma más sencilla de ejecutar y automatizar tareas en nuestro linux. Son rápidos, seguros y muy fiables.

En este articulo vemos las leyes de buenas practicas a la hora de crear un script, o mejor dicho… Como escribir scripts bash correctamente para que sea compresible, y lo más importante, reutilizable.

 

Cómo escribir scripts bash correctamente

Aportamos los diez consejos que cualquier desarrollador bash debería seguir.

Siempre agregar comentarios

Los comentarios ayudan a comprender el desarrollo del script, y facilitan la tarea de otro desarrollador que quiera continuar o mejorar tu script. Recuerda que son a modo indicativo, para que no se intenten ejecutar deben estar comentados (carácter #).

# El script de sololinux.es, .....

Salir del script al encontrar un error

Bash es muy potente, tanto, que a veces al producirse un error es capaz de seguir ejecutándose. No debes permitirlo, para subsanar este problema usamos la opción abreviada de «errexit».

# El script de sololinux.es

set -e

Salir del script cuando bash use una variable no declarada

Algunas veces bash puede intentar ejecutar variables no declaradas, esto podría causar un desarrollo anormal del resultado final del script. Para salir del script utilizamos la opción abreviada de «nounset».

# El script de sololinux.es 

set -u

Las referencias a variables deben llevar comillas dobles

Cuando usamos las comillas dobles en las referencias a variables, nos evitamos la división de palabras y el tener que utilizar más espacios de los debidos.

#!/bin/bash
# El script de sololinux.es

set -e

set -u

echo "Salida sin comillas dobles" 
echo
names="YO USO LINUX"
for name in $names; do
        echo "$name"
done
echo

echo "Salida con comillas dobles" 
echo
for name in "$names"; do
        echo "$name"
done

exit 0

imagen de ejemplo…
Ejemplo de comillas dobles

Ejemplo de comillas dobles

 

Utiliza las funciones

Este es un gran defecto de los programadores noveles. Acostúmbrate a usar las funciones, se modulariza el código y es más legible.

function check_root(){
	comando-1; 
	comando-2;
}

OR
check_root(){
	comando-1; 
	comando-2;
}

Si generas el código en una linea, no te olvides de terminar.
check_root(){ comando-1; comando-2; }

No compares cadenas con ==

No es necesario introducir los dos caracteres de igual, con uno es suficiente. Ahorraras espacio y trabajo.

value1=”megustalinux”
value2=”megustasololinux”
if [ "$value1" = "$value2" ]

Usa $ en vez de las comillas inversas

Para sustituir comandos usa el símbolo del dolar en vez de las comillas inversas.

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

Utiliza mayúsculas para las variables de entorno

Para las variables de entorno debes usar letras mayúsculas, en cambio si son variables personalizadas deberías utilizar letras minúsculas. Con esta practica evitaras muchos conflictos entre variables.

solo_linux=”$HOME/Trabajos/scripts/demo.sh”
perl “$solo_linux” -h  “$1”

Usa readonly en las variables estáticas

Una vez definidas en un script las variables estáticas no se deben modificar, así que las ponemos en modo solo-lectura.

readonly hostname_file=”/etc/hostname”
readonly localtime_file=”/etc/localtime”
readonly network_file=”/etc/network”

Depurar el código

Si son scripts con pocas lineas no es necesario, pero si escribes scripts bash con cientos de lineas debes depurarlo antes de ponerlo en producción. En un próximo articulo veremos como depurar el código de bash.

 

Canales de Telegram: Canal SoloLinux – Canal SoloWordpress

Espero que este articulo te sea de utilidad, puedes ayudarnos a mantener el servidor con una donación (paypal), o también colaborar con el simple gesto de compartir nuestros artículos en tu sitio web, blog, foro o redes sociales.

 

10 Comentarios

  1. Carlos O
    17/01/2020
    • Sergio G.B.
      17/01/2020
      • Marín
        17/01/2020
        • Sergio G.B.
          17/01/2020
      • Carlos O
        17/01/2020
        • Sergio G.B.
          17/01/2020
  2. Henry
    17/01/2020
    • Sergio G.B.
      17/01/2020
  3. Ruslan DC
    17/01/2020
    • Sergio G.B.
      18/01/2020

Agregar comentario