Como hacer un menu en BASH shell scripting (bucles y sentencias)

Crear un script menu en bash es la manera mas facil de automatizar tareas, instalaciones, ejecuciones, copias de seguridad y miles de cosas mas.
En esta ocasion usaremos bash, un interprete de comandos que viene por defecto en la mayoria de distribuciones GNU/LINUX. Es el lenguaje mas facil de aprender y potente en mi opinion.
REQUISITOS PARA CREAR EL MENU
Actualizaremos el repositorio de nuestra terminal, y instalaremos algunos programas que usaremos mas adelante.
- apt update && apt upgrade -y
- apt install nano
Crear un nuevo archivo con el comando touch, pueden poner el nombre que gusten al menu.sh. Finalmente ejecutaremos nano para editar el archivo creado.
- touch menu.sh
- nano menu.sh
TE PUEDE INTERESAR: Como crear correos gmail sin numero

COMANDOS PARA EL MENU EN BASH
Les explicare un poco de cada uno de las funciones y comandos que se agregara al menu. Por lo tanto tendras una idea, para agregar mas funciones o mejorar este codigo.
EXPLICACION1: Esta es la direccion del interprete de comandos en bash de nuestra terminal GNU/linux.
#!/bin/bash
EXPLICACION2: Se puede agregar comentarios, consejos, creditos, mensajes…etc usando el signo numeral o michi #
#Aqui el comentario
EXPLICACION3: El bucle while lo usaremos para regresar al inicio del menu, luego de escoger una opcion. finalmente usaremos do-done para controlar el bloque de instrucciones.
while :
do
#Aqui va todo el codigo o menu
done
EXPLICACION4: Ahora creamos nuestro menu usando la shell echo, lo que hara este codigo es mostrar el texto en la pantalla. Pueden agregar mas opciones usando echo “agregar opcion”.
- clear (limpia la pantalla de inicio)
- echo -e “\e[1;32m” (Color verde ilimitado en bash)
TE PUEDE INTERESAR: Colores en bash
#Menu
clear
echo -e “\e[1;32m”
echo ” MENU SCRIPT V.1 “
echo “1. Mostrar directorio”
echo “2. Mostrar calendario”
echo “3. Mostrar dato”
echo “4. Salir”
EXPLICACION5: Lo que hara este codigo es dialogar con el usuario para escoger una opcion en el menu. y read opcion leera la peticion.
#Escoger menu
echo -n “Escoger opcion: “
read opcion
EXPLICACION6: Usaremos la sentencia case-esac para controlar las expresiones ($) del menu, iniciando con la variable in. Haremos un cierre con parentesis ) a cada condicion (opcion de menu), para comenzar.
El comando Read foo se utiliza como una input (presiona enter para continuar). Para detener la lista de comandos, agregaremos dos ;; despues de cada condicion.
#Seleccion de menu
case $opcion in
1) echo “Mostrando directorio”
ls
read foo
;;
2) echo “Mostrando calendario”
cal
read foo
;;
3) echo “Mostrando datos”
date
read foo
;;
4)exit 0;;
EXPLICACION7: Usando el asterisco y parentesis, mostraremos una alerta cada vez que se cometa un error al escoger una opcion. esac y done son para cerrar las sentencias y instrucciones asignadas anteriormente.
#Alerta
*)echo “Opcion invalida…”
sleep 1
esac
done

FINAL: Ya agregado todo el codigo, solo queda guardar los cambios con CTRL + x + y ENTER. Listo ahora solo quedaria ejecutar el script con los siguientes comandos.
- chmod +x menu.sh
- bash menu.sh
DATO IMPORTANTE: Pueden editar todo el contenido que esta entre las comillas ” ” luego de echo, ademas pueden agregar mas opciones dentro de case-esac
CODIGO COMPLETO DEL MENU SCRIPT
#!/bin/bash
#todoreal.com
while :
do
#Menu
clear
echo -e "\e[1;32m"
echo " MENU SCRIPT V.1 "
echo ""
echo "1. Mostrar directorio"
echo "2. Mostrar calendario"
echo "3. Mostrar dato"
echo "4. Salir"
echo ""
#Escoger menu
echo -n "Escoger opcion: "
read opcion
#Seleccion de menu
case $opcion in
1) echo "Mostrando directorio"
ls
read foo
;;
2) echo "Mostrando calendario"
cal
read foo
;;
3) echo "Mostrando datos"
date
read foo
;;
4)exit 0;;
#Alerta
*)echo "Opcion invalida..."
sleep 1
esac
done
¡NO SE OLVIDEN AGREGAR UN COMENTARIO!
Si tienen dudas, no se olviden de expresarlos con un comentario y de esta manera yo les respondere. Si quieren otro tipo de tutoriales simplemente comenten lo que quieren aprender. Con gusto estare aportando mas informacion para que ustedes aprendan o viceversa.