Las mejores prácticas de programación de bash

Las mejores prácticas de programación de bash
Bash es una de las conchas más populares disponibles en Linux. Es simple, rápido y liviano. Además de interpretar y ejecutar comandos, Bash puede funcionar con scripts para automatizar un conjunto particular de tareas.

Esta guía elabora algunas de las prácticas comunes en la programación de bash.

Scripting de bash

Bash es un programa de shell responsable de interpretar y ejecutar comandos. Además de ejecutar comandos manuales, Bash también admite scripting. Estos scripts son un conjunto de comandos declarados en un archivo de texto. Bash Scripting es un lenguaje de programación simple y accesible para aprender en Linux. Es un requisito si está interesado en los trabajos de administración de sistemas.

Como cualquier otra habilidad, la persistencia y la repetición lo ayudarán a mejorar. Si bien no hay un conjunto fijo de reglas, estos son algunos de los hábitos que pueden mejorar considerablemente la calidad de su script.

Muesca
La sangría es una gran parte de la codificación. La sangría adecuada es primordial tener un código legible y mantenible.

La sangría adecuada puede ser un salvavidas si está trabajando con múltiples niveles de lógica. La sangría facilita el reconocimiento de las capas lógicas.

Aquí hay un ejemplo de escritura múltiple con sangría adecuada.

#!/bin/bash
Leer -P "Ingrese un valor" var_x
if [$ ((var_x%2)) -eq 0]; entonces
Salir 0
demás
Salir 1
FI

Así es como se verá el código sin la sangría adecuada.

#!/bin/bash
Leer -P "Ingrese un valor" var_x
if [$ ((var_x%2)) -eq 0]; entonces
Salir 0
demás
Salir 1
FI

Comentario
Comentar es una de las cosas más importantes cuando se trata de dar sentido a los códigos. Los comentarios deben explicar varias partes del código, especialmente cuando es complejo. Es fácil confundirse sobre varias partes del código, incluso sus propios códigos. Si es un gran proyecto y otros probablemente trabajarán en el mismo código en el futuro.

Por ejemplo, aquí hay un script de muestra con y sin comentarios.

nombre de usuario = $ 1
# Verifique la existencia del nombre de usuario
Grep ^$ UserName: /etc /passwd
Si [$? != 0]; entonces
echo "No hay tal usuario: $ UserName"
Salir 1
FI
usuario = $ 1
Grep ^$ UserName: /etc /passwd
Si [$? != 0]; entonces
echo "$ Nombre de usuario no encontrado"
Salir 1
FI

Código de devolución si algo sale mal
Cuando algo sale mal, devolver un valor distinto de cero es siempre una buena idea. Un código puede funcionar mal en cualquier momento, especialmente con condicionales. Tener un código de devolución para trabajar puede ahorrar una tonelada de molestias. Hace que la depuración sea más efectiva.

En este ejemplo, determinaremos si un número es impar o incluso. En lugar de imprimir la salida, el código de salida indicará cuál fue el resultado.

#!/bin/bash
Leer -P "Ingrese un valor" var_x
if [$ ((var_x%2)) -eq 0]; entonces
Salir 0
demás
Salir 1
FI

El script existe al error
En muchas situaciones, Bash continuará ejecutando el script incluso cuando falla una parte específica, impactando mal el resto del script.

Para garantizar que el guión exista al enfrentar un error fatal, se recomienda tener las siguientes líneas al principio.

$ set -o errexit

A veces, Bash también puede intentar usar una variable no declarada, causando un error lógico. El uso del siguiente comando asegurará que Bash dejará de ejecutar el script si usa una variable no declarada.

$ set -o nomento

Sustitución de comandos
En situaciones, es posible que deba trabajar con la salida de un comando particular. Podemos hacerlo usando la sustitución del comando.

La subestación de comandos tiene diferentes formas de implementación.

$ echo 'echo "hola mundo"
$ Echo $ (echo "Hola mundo)

Siempre se recomienda usar la segunda opción

Nombre de variable significativo
Las variables son una parte integral de un script bash complejo. Cada variable debe tener un nombre propio que signifique su uso.

A menudo, los patrones de nombres también pueden tiempo; Las personas evitarán escribir algunos caracteres adicionales a cambio de ganancia de tiempo a corto plazo. Sin embargo, dicha práctica es una receta para el desastre. Cuando se trata del mantenimiento a largo plazo de dicho código, puede ser complicado dar sentido a un propósito de una variable.

Sería mejor si también fuera consistente en las variables de nombres. Los patrones de nombres de variables aleatorias también pueden conducir a la confusión en el futuro.

Mire los dos códigos de muestra, ambos haciendo la misma tarea. ¿Qué código es mejor entender y trabajar??

#!/bin/bash
Leer -P "Ingrese la longitud:" x
Leer -P "Ingrese el ancho:" Y
z = $ [$ x*$ y]
Echo "Área: $ Z"
#!/bin/bash
Leer -P "Ingrese la longitud:" Longitud
Leer -P "Ingrese el ancho:" Ancho
área = $ [$ longitud*$ ancho]
echo "área: $ área"

En Bash, todas las variables de entorno se nombran con letras mayúsculas. Se recomienda usar letras minúsculas para variables de script para evitar conflictos.

Usando funciones
En la programación bash, una función es una forma de agrupar los comandos que se pueden ejecutar más tarde. Ayuda a reducir la repetición del código. Las funciones también hacen que el código sea más legible y mantenible.

Ahora, hay escenarios específicos en los que las funciones tienen sentido. Si está utilizando un puñado de comandos enfocados, configurar una función puede ahorrarle muchos problemas. Si está utilizando solo un comando, entonces tener una función no tiene impacto en la eficiencia.

Igual que las variables, los nombres de las funciones deben ser significativos.

función fn_odd ()
Var_x local
Leer -P "Ingrese el número" var_x
Leer var_x
if [$ ((var_x % 2)) -eq 0]; entonces
hacer eco "incluso"
demás
Echo "extraño"
FI

Tipos de argumentos
En Bash, no hay una forma fija de declarar un tipo variable. Puede dar lugar a comparar variables de tipos de datos conflictivos. Asegurar que las variables y los argumentos sean el mismo tipo esperado le ahorrarán muchos dolores de cabeza.

En el siguiente ejemplo, el script imprimirá si el argumento es un número o no.

si ! ["$ 1" -eq "$ 1" 2> /dev /null]
entonces
echo "Error: no número"
Salir 1
FI

Falta de argumentos o orden de argumento incorrecto
Siempre es una buena idea suponer que la entrada del usuario probablemente tendrá datos incorrectos, sin importar qué. La probabilidad es mayor cuando el usuario necesita ingresar más de un argumento.

Debe tener mecanismos de corrección de errores en los puntos de entrada del usuario para evitar una catástrofe debido a la entrada incorrecta del usuario. Aclare la instrucción sobre lo que se supone que debe hacer el usuario.

Salida adecuada
Al ejecutar sus guiones, las personas deben saber lo que necesitan saber. No deberían tener que leer su código para comprender su propósito o lo que está haciendo.

Debe haber comentarios sobre la pantalla que explica lo que está sucediendo detrás de escena en cada paso. Por ejemplo, ¿cuál sería la experiencia del usuario si el administrador de paquetes no imprima ninguna salida significativa en varias etapas de su operación?

Depuración
Después de escribir el script, Bash puede verificar la sintaxis del script para obtener errores sin ejecución. Para realizar una verificación de sintaxis, use el siguiente comando bash.

$ bash -nn

Alternativamente, el shebang puede habilitar la sintaxis para depurar el modo.

#!/bin/bash -n

Para ejecutar bash en el modo de depuración, use la bandera "-x".

$ bash -xx

También puede ser parte del shebang.

#!/bin/bash -x

Pensamientos finales

Estas son solo un puñado de prácticas de programación de bash. Estos son hábitos simples pero poderosos para desarrollar. Estos trucos asegurarán que sus scripts bash sean optimizados, legibles y confiables. Desea que sus scripts de shell sean simples y directos, no es necesario exprimir tanto como sea posible utilizando comandos de sintaxis o shell muy exóticos.

Computación feliz!