Tutoriales

Modo estricto de Bash: explicación de set -euo pipelinefail

introducir

El modo estricto de Bash es una práctica de secuencias de comandos útil que le ayuda a escribir secuencias de comandos Bash más seguras y confiables. De forma predeterminada, un script Bash puede continuar ejecutándose incluso si el comando falla, falta una variable o el comando devuelve un error en la canalización. Esto puede causar serios problemas en los scripts de automatización, scripts de respaldo, scripts de implementación y scripts de seguridad de red.

El modo estricto ayuda a detectar estos problemas a tiempo. Generalmente escrito como:

set -euo pipefail

Si está aprendiendo a crear secuencias de comandos Bash, comprender el modo estricto le ayudará a evitar errores ocultos y escribir secuencias de comandos más claras.

¿Qué es el modo estricto de Bash?

El modo estricto de Bash no es una característica o directiva separada. Es una combinación de opciones de Bash que cambian el comportamiento del script cuando ocurre un error.

Las líneas de modo estricto comunes son:

set -euo pipefail

Esta línea generalmente se agrega después del shebang cerca de la parte superior del script Bash.

ejemplo:

#!/bin/bashset -euo pipefailecho "Script started"

¿Qué significa establecer -e?

este set -e La opción le dice a Bash que detenga el script si el comando falla.

ejemplo:

#!/bin/bashset -eecho "Before error"ls /wrong-directoryecho "This line will not run"

si /wrong-directory no existe, el script se detiene inmediatamente. Esto evita que el script continúe ejecutándose si faltan datos o son incorrectos.

¿Qué significa set-u?

este set -u La opción le dice a Bash que detenga el script cuando se usa una variable indefinida.

ejemplo:

#!/bin/bashset -uecho "Username is $username"

si variable username Si no está definido, Bash detendrá el script y mostrará un error. Esto es útil porque se pueden ignorar los errores tipográficos en los nombres de las variables.

Ejemplo correcto:

#!/bin/bashset -uusername="kali"echo "Username is $username"

¿Qué significa falla en la tubería?

De forma predeterminada, Bash solo verifica el estado de salida de la última instrucción en la canalización. este pipefail La opción hace que la canalización falle si falla algún comando dentro de la canalización.

ejemplo:

#!/bin/bashset -o pipefailcat missing-file.txt | grep "error"

si cat Si el archivo falla porque no existe, la canalización se considera fallida.

Ejemplo completo del modo estricto de Bash

Crea un guión:

nano strict-mode.sh

Añade este código:

#!/bin/bashset -euo pipefaillog_file="/var/log/auth.log"echo "Checking failed SSH login attempts..."grep "Failed password" "$log_file" | tail -5echo "Check completed"

Ejecútelo:

chmod +x strict-mode.sh./strict-mode.sh

Este script es más seguro porque se detendrá si ocurre un error crítico.

en conclusión

El modo estricto de Bash le ayuda a escribir scripts más seguros al detener la ejecución cuando falla un comando, se utiliza una variable indefinida o se rompe una tubería. este set -euo pipefail La línea es particularmente útil para tareas de automatización, respaldo, secuencias de comandos de servidor y seguridad de red.

Para los principiantes, el modo estricto es un buen hábito que se debe aprender temprano. Hace que los scripts Bash sean más fáciles de depurar y reduce el riesgo de fallas silenciosas.

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba