LinuxParty

Inicio desactivadoInicio desactivadoInicio desactivadoInicio desactivadoInicio desactivado
 

En muchas tareas de administración de sistemas necesitamos detener la ejecución de un script y esperar la intervención del usuario. Ya sea para confirmar una acción crítica o simplemente para dar tiempo antes de continuar, disponer de una pausa controlada es fundamental.

En este artículo te mostramos un script en Bash sencillo pero muy útil que permite:

  • Esperar indefinidamente hasta que el usuario pulse una tecla
  • Esperar un tiempo determinado (5, 10, 15 o 30 segundos)
  • Permitir interrumpir la espera pulsando una tecla
  • Devolver un código de salida compatible con estructuras if

⚙️ Script: espera.sh

#!/bin/bash
#
# Uso:
# ------------------------
# Ejemplo 1
# if /root/bin/espera.sh -3; then
#   echo "SI"
# else
#   echo "NO"
# fi
# -------------------------
# Ejemplo 2
# if espera.sh; then echo "si"; else echo "no"; fi
#
leer_tecla() {
    local timeout=${1:-}
    local key=""
    local restante estado

    if [ -z "$timeout" ]; then
        printf "Pulse una tecla para continuar... (s/n): "
        read -r -s -n 1 key
    else
        printf "Pulse una tecla (s/n). Cuenta atrás: "

        for ((restante=timeout; restante>0; restante--)); do
            if (( restante < timeout )); then
                printf ", "
            fi
            printf "%s" "$restante"

            # Espera hasta un segundo, atendiendo al teclado.
            if read -r -s -t 1 -n 1 key; then
                break
            else
                estado=$?

                # Bash devuelve un estado >128 al agotar el tiempo.
                # Si es otro error, como fin de entrada, terminamos.
                if (( estado <= 128 )); then
                    break
                fi
            fi
        done
    fi

    printf "\n"

    case "$key" in
        s|S) return 0 ;;
        *)   return 1 ;;
    esac
}

case "${1:-}" in
    -3|-5|-10|-15|-30)
        leer_tecla "${1#-}"
        ;;
    "")
        leer_tecla
        ;;
    *)
        printf "Uso: %s [-3 | -5 | -10 | -15 | -30]\n" "$0" >&2
        exit 1
        ;;
esac

exit $?

🚀 ¿Qué hace este script?

Este script implementa una pausa interactiva que puede funcionar en dos modos:

🔹 Modo interactivo (sin parámetros)

./espera.sh
  • Espera indefinidamente
  • El usuario decide cuándo continuar
  • Ideal para validaciones manuales

🔹 Modo con temporizador

./espera.sh -10
  • Espera un máximo de 10 segundos
  • Se puede interrumpir en cualquier momento pulsando una tecla
  • Si no hay interacción → continúa automáticamente

🔁 Integración en scripts

Una de las grandes ventajas es que devuelve códigos de salida estándar:

  • 0 → confirmación positiva (s o S)
  • 1 → cualquier otra tecla o timeout

Esto permite integrarlo fácilmente en automatizaciones:

if espera.sh -5 ; then
  echo "Acción confirmada"
else
  echo "Acción cancelada o timeout"
fi

💡 Casos de uso reales

Este tipo de script resulta especialmente útil en:

  • Scripts de despliegue antes de aplicar cambios críticos
  • Automatizaciones con validación manual opcional
  • Procesos de mantenimiento en servidores
  • Flujos de backup o borrado de datos
  • Sistemas híbridos (automatización + intervención humana)

🧠 Ventajas clave

  • ✔️ Ligero y sin dependencias
  • ✔️ Compatible con cualquier sistema Linux
  • ✔️ Fácil de integrar en scripts existentes
  • ✔️ Mejora el control y la seguridad en tareas automatizadas

🔧 Instalación

chmod +x espera.sh
mv espera.sh /usr/local/bin

📌 Conclusión

A veces, un pequeño script puede marcar una gran diferencia en la seguridad y control de nuestros sistemas. Este tipo de pausas inteligentes permiten combinar automatización con supervisión humana de forma sencilla y efectiva.

Si trabajas habitualmente con Bash, este script es uno de esos pequeños “must-have” que acaban formando parte de tu toolkit diario.

Escribir un comentario

Código de seguridad
Refescar



Redes:



   

 

Encuestas

Cuál es tu escritorio gráfico favorito en 2026

Suscribete / Newsletter

Suscribete a nuestras Newsletter y periódicamente recibirás un resumen de las noticias publicadas.

Donar a LinuxParty

 

Dona a LInuxParty

Donar 10

Donar 20

 

 

Tutorial de Linux

Formulario de acceso