Skip to content

Instantly share code, notes, and snippets.

@martingaido
Created March 6, 2023 23:28
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save martingaido/593233c430a4b8dd06ab31debb2a6673 to your computer and use it in GitHub Desktop.
Save martingaido/593233c430a4b8dd06ab31debb2a6673 to your computer and use it in GitHub Desktop.
Menu Interactivo en BASH
#!/bin/bash
# Define las opciones del menú
options=("Opción 1" "Opción 2" "Opción 3" "Salir")
# Establece la posición inicial del cursor en la primera opción
selected=0
# Función para mostrar el menú y resaltar la opción seleccionada
function show_menu() {
clear
echo "Selecciona una opción:"
for i in "${!options[@]}"; do
if [ $i -eq $selected ]; then
echo -e "\033[7m${options[$i]}\033[0m"
else
echo " ${options[$i]}"
fi
done
}
# Muestra el menú por primera vez
show_menu
# Bucle infinito para leer la entrada del usuario y procesarla
while true; do
# Lee la entrada del usuario
read -s -n 1 key
# Actualiza la posición del cursor en función de la entrada del usuario
case $key in
"A" | "a") # Flecha arriba
((selected--))
if [ $selected -lt 0 ]; then
selected=$((${#options[@]} - 1))
fi
show_menu
;;
"B" | "b") # Flecha abajo
((selected++))
if [ $selected -ge ${#options[@]} ]; then
selected=0
fi
show_menu
;;
"" | " ") # Enter o Espacio
if [ $selected -eq $((${#options[@]} - 1)) ]; then
# Si se seleccionó la última opción (Salir), salir del bucle
break
else
# Si se seleccionó otra opción, hacer algo en consecuencia
echo "Has seleccionado: ${options[$selected]}"
# Aquí puedes poner la lógica correspondiente para cada opción del menú
# ...
# Pausa antes de volver a mostrar el menú
read -s -n 1 -t 1
# Volver a mostrar el menú
show_menu
fi
;;
*) # Ignorar otras entradas
;;
esac
done
echo "Adiós!"
@henimo91
Copy link

Feliz noche, como haria para poner a funcionar otras opciones?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment