freddy molleda
Jordan Arellano Rosero
Jhon Jairo Morales Rodriguez
esta bonito el tema de las calaberas, tienes un link en especial para crearlas?
Construye un menú de opciones en Bash, limpio y funcional, para manejar utilidades de Postgis en Ubuntu. Con una estructura clara y mensajes guiados, este enfoque combina sentencias de decisión y de iteración para ofrecer una interacción fluida: desde imprimir títulos hasta capturar la opción del usuario, simular tareas con pausas y salir de forma segura.
¿Cómo se estructura el menú de opciones en bash?
La base inicia con el shebang para indicar que el script se ejecuta con bash. Luego, un while infinito controla el flujo, limpia la pantalla con clear, imprime encabezados con echo y muestra las opciones. Se captura la entrada con read -p y el modificador -n para limitar a un carácter. La sentencia case valida la opción y ejecuta una acción: imprimir un mensaje y pausar con sleep; la opción 5 termina con exit 0.
#!/bin/bash # Programa: menú de opciones para utilidades de Postgis # Autor: Tu Nombre while true; do clear echo "PG UTIL - Programa de utilidad de Postgis" echo "----------------------------------------" echo "Menú principal" echo "--------------" echo "1) Instalar Postgis" echo "2) Desinstalar Postgis" echo "3) Sacar respaldo" echo "4) Restaurar respaldo" echo "5) Salir" read -p "Ingrese una opción [1-5]: " -n 1 opcion echo case "$opcion" in 1) echo -e "\nInstalar Postgis" sleep 3 ;; 2) echo -e "\nDesinstalar Postgis" sleep 3 ;; 3) echo -e "\nSacar respaldo" sleep 3 ;; 4) echo -e "\nRestaurar respaldo" sleep 3 ;; 5) echo -e "\nSalir del programa" exit 0 ;; *) echo -e "\nOpción no válida" sleep 2 ;; esac done
¿Qué imprime el menú?
¿Cómo leer y validar la opción del usuario?
¿Qué conceptos y comandos clave debes dominar?
La implementación integra comandos y estructuras de control que conviene practicar. Cada pieza aporta claridad y control al flujo.
¿Cómo ejecutar y verificar el script en Ubuntu?
Antes de correrlo, asegúrate de habilitar permisos y probar cada opción para validar la interacción.
¿Te gustaría añadir más opciones al menú, como listar bases de datos o verificar servicios? Comparte tus ideas y mejoras en los comentarios.
freddy molleda
Jordan Arellano Rosero
Jhon Jairo Morales Rodriguez
esta bonito el tema de las calaberas, tienes un link en especial para crearlas?
Este es un menú mucho mas simple que el que usó el profesor, y también quisiera añadir que por lo general los programas de bash son usados para poder tener parametros, ex: sh $0 -h, por esto creo que usar menus no es la mejor opción
#!/bin/bash menu=$(cat << EOF 1) delete my computer 2) delete your moms' computer 3) delete the internet 4) exit 5) clear screen EOF ) while :; do echo "$menu" echo "" read -p "Option: " u_option case "$u_option" in 1|"delete my computer") u_os=$(uname) echo "Deleting your computer..." sleep 0.2 echo "removing your OS: $u_os" sleep 1s echo "removing personal files..." sleep 1s echo "Done!" echo "" ;; 2|"delete your moms' computer") u_os=$(uname) echo "Deleting your moms' computer..." sleep 0.2 echo "removing his/her OS: $u_os" sleep 1s echo "removing personal files..." sleep 1s echo "Done!" echo "" ;; 3|"delete the internet") echo "#the password is not okay#" read -sp "Type the password to remove the internet: " u_password if [ "$u_password" == "okay" ]; then echo "Deleting the internet..." sleep 1s echo "deleting your dog..." sleep 1s echo "Done!" echo "" else echo "Incorrect password" echo "" fi ;; 4|"exit") echo "Glad to help!" sleep 1s echo "exiting..." exit ;; 5|clear|"clear screen") clear ;; *) echo "Sorry, command not found..." echo "try again" sleep 1s echo "" ;; esac done
Valente IA
Jose Suarez
Copio el codigo:
# ! /bin/bash # Programa que permite manejar las utilidades de Postres # Autor: Jose Suarez opcion=0 while : do #Limpiar la pantalla clear #Desplegar el menú de opciones echo "-----------------------------------------" echo "PGUTIL - Programa de Utilidad de Postgres" echo "-----------------------------------------" echo " MENÚ PRINCIPAL " echo "-----------------------------------------" echo "1. Instalar Postgres" echo "2. Desinstalar Postgres" echo "3. Sacar un respaldo" echo "4. Restar respaldo" echo "5. Salir" #Leer los datos del usuario - capturar información read -n1 -p "Ingrese una opción [1-5]:" opcion #Validar la opción ingresada case $opcion in 1) echo -e "\n\nInstalar postgres....." sleep 3 ;; 2) echo -e "\n\nDesinstalar postgres...." sleep 3 ;; 3) echo -e "\n\nSacar respaldo..." sleep 3 ;; 4) echo -e "\n\nRestaurar respaldo..." sleep 3 ;; 5) echo -e "\n\nSalir del Programa" clear exit 0 ;; esac done
Asi queda el menu:
Gustavo Andres Niño Forero
Pésimo video ... 36 veces diciendo "TEMA" ... confunde en la instrucción
Reinaldo Mendoza
Se ve muy genial el tema de usar ese menu
rusbel bermúdez rivera
lo unico que no entendi fue "el tema" de usar ";;" despues de cada sleep
Manuel Guzman
No se usa por el sleep como tal, se usa porque está dentro de un case y por cada "opción" se debe terminar con un ;;
Ejemplo:
#!/bin/bash VAR="Arch Linux" case $VAR in "Arch Linux") echo -n "Linuxize matched" ;; Fedora | CentOS) echo -n "Red Hat" ;; esac
freddy molleda
Ivan Rene Acosta Lallemand
Julian Lamadrid
para son las 3 comillas del final ```
Ian Cristian Ariel Yané
++Combinacion de programas anteriores++
#! /bin/bash # Programa que consulta que tipo de funcionalidad utilizar #Presentacion while : do # Limpiar la pantalla clear # Desplegar el menú de opciones echo "_________________________________________" echo " MENÚ PRINCIPAL " echo "_________________________________________" echo "1. Consultar obligacion de voto" echo "2. Descargar imagen" echo "3. Salir" #eleccion de programa echo "Ingresa una opcion entre 1 y 3: " read opcion case $opcion in 1) regex_nombre="^[A-Z]?[a-z]+$" regex_edad="^[0-9]{1,3}$" #Solicitar datos echo "Ingresa tu nombre: " read nombre echo "Ingresa tu edad: " read edad if [[ $edad > 18 && $edad =~ $regex_edad && $nombre =~ $regex_nombre ]]; then echo "$nombre, eres mayor de edad, debes votar." else echo "$nombre, eres menor de edad, no votas." fi sleep 3 # Aquí puedes agregar el código para la instalación de PostgreSQL ;; 2) echo -e "\nDescargando imagen...." wget https://cdn.pixabay.com/photo/2023/08/12/13/59/cat-8185712_1280.jpg sleep 3 # Aquí puedes agregar el código para la desinstalación de PostgreSQL ;; 3) echo "Salir del Programa" exit 0 ;; *) echo -e "\nOpción no válida. Por favor, ingrese una opción válida [1-5]." sleep 2 ;; esac done
Ivan Acosta
Excelente forma de maquetar un menú en bash!
Jose Suarez
Tema de Menu de opciones
DAVID EDUARDO BAEZ SANCHEZ
Breiner Nieto Barcelo
Cuando ejecuto la opcion 5 se sale del programa, pero tambien me cierra la conexion en mi usuario de linux, por lo que debo volver a loguear el usuario root. Es normal que pase o se trata de un error?
Guillermo García López
Si todavía presentas este problema, podrías postear tu código para poder checarlo?
Juan Manuel Megia Navarro
Hola, puedes colocar la sentencia brake para romper el bucle y que no cierre sesión.
Gonzalo Gramaglia
Programar este tipo de scripts en la interfaz de la terminal me hace acordar mucho a la serie ‘Halt and Catch Fire’ 😂😁
Joan Benavides Olivera
Script escrito y probado en Ubuntu 18.04 5 #Requisitos 6 regex_option='^[1-5]{1}' 7 8 #Variables locales 9 option=0 10 11 while : 12 do 13 #Limpiar la pantalla 14 clear 15 #Mostrar el menu de opciones 16 echo "----------------------------------------" 17 echo "PGUTIL - Programa de utilidades Postgres" 18 echo "----------------------------------------" 19 echo " Menu Principal " 20 echo "----------------------------------------" 21 echo "1.Instalar Postgres" 22 echo "2.Desinstalar Postgres" 23 echo "3.Hacer un bakcup" 24 echo "4.Restaurar el backup" 25 echo "5.Salir." 26 27 #Leer la opcion del usuario (capturar datos) y verificarla 28 29 read -n1 -p "Introduce un opcion del menu: " option 30 echo -e "" 31 32 if [[ $option =~ $regex_option ]]; then 33 34 #Validar la opcion introducida 35 case $option in 36 1) 37 echo "Instalando Postgres ..." 38 sleep 3 #Delay the CLI action for 3 secs 39 ;; 40 2) 41 echo "Desinstalando Postgres ..." 42 sleep 3 #Delay the CLI action for 3 secs 43 ;; 44 45 3) 46 echo "Creando el BackUp..." 47 sleep 3 #Delay the CLI action for 3 secs 48 ;; 49 4) 50 echo "Restaurando el BackUp ..." 51 sleep 3 #Delay the CLI action for 3 secs 52 ;; 53 5) 54 echo "Saliendo ..." 55 sleep 1 #Delay the CLI action for 1 secs 56 #break 57 exit 0 #salir del bucle 58 ;; 59 esac 60 61 else 62 echo "Las options deben ser 1-5" 63 sleep 3 64 fi 65 66 done
Marvin Javier Santos Fernández
Francisco Fuentes
Se vengo en este curso. .... con todo los "temas que le hacian falta"..
william soliz castillo
william soliz castillo
Diego Andres Benitez
Hice una modificación sobre el código de la clase
#!/bin/bash # Programa que permite manejar utilidades de Postgres # Elaborado por: Diego Andres Benitez # Contacto: @xyzdiego opcion=0 while : do # Limpiar la consola clear echo "-----------------------------------------" echo "PGUtil - Programa de utilidad de Postgres" echo "-----------------------------------------" echo " MENU PRINCIPAL " echo "-----------------------------------------" echo "1. Instalar Postgres" echo "2. Desinstalar Postgres" echo "3. Sacar un respaldo" echo "4. Restar un respaldo" echo "5. Salir" # Leer los datos del usuario - captura de información read -n1 -p "Ingrese una opción [1-5] " opcion # Validar la opción ingresada case $opcion in 1) echo -e "\nInstalar Postgres........" sleep 3 ;; 2) echo -e "\nDesinstalar Postgres........" sleep 3 ;; 3) echo -e "\nSacar respaldo........" sleep 3 ;; 4) echo -e "\nRestar respaldo........" sleep 3 ;; 5) echo -e "\nSalir" exit 0 ;; *) echo -e "\nPor favor, ingresa una opción valida" sleep 2 ;; esac done
**Menu de opciones con una pequeña introduccion animada **
1 #! /bin/bash 2 3 option=0 4 ini=0 5 6 while : 7 do 8 if [ $ini == 0 ]; then 9 for ((i=0;i<3;i++)) 10 do 11 clear 12 echo "███████████████████████████" 13 echo "███████▀▀▀░░░░░░░▀▀▀███████" 14 echo "████▀░░░░░░░░░░░░░░░░░▀████" 15 echo "███│░░░░░░░░░░░░░░░░░░░│███" 16 echo "██▌│░░░░░░░░░░░░░░░░░░░│▐██" 17 echo "██░└┐░░░░░░░░░░░░░░░░░┌┘░██" 18 echo "██░░└┐░░░░░░░░░░░░░░░┌┘░░██" 19 echo "██░░┌┘ ░░░░░ └┐░░██" 20 echo "██▌░│ ░░░ │░▐██" 21 echo "███░│ ░░ ░░ │░███" 22 echo "██▀─┘░░░░░░░ ░░░░░░░└─▀██" 23 echo "██▄░░░ ░░ ░░ ░░░▄██" 24 echo "████▄─┘ ░░░░░░░ └─▄████" 25 echo "█████░░ ─┬┬┬┬┬┬┬─ ░░█████" 26 echo "████▌░░░ ┬┼┼┼┼┼┼┼ ░░░▐████" 27 echo "█████▄░░░└┴┴┴┴┴┴┴┘░░░▄█████" 28 echo "███████▄░░░░░░░░░░░▄███████" 29 echo "██████████▄▄▄▄▄▄▄██████████" 30 echo "███████████████████████████" 31 echo "LOADING...LOADING...LOADING" 32 sleep 0.3 33 clear 34 echo "███████████████████████████" 35 echo "███████▀▀▀░░░░░░░▀▀▀███████" 36 echo "████▀░░░░░░░░░░░░░░░░░▀████" 37 echo "███│░░░░░░░░░░░░░░░░░░░│███" 38 echo "██▌│░░░░░░░░░░░░░░░░░░░│▐██" 39 echo "██░└┐░░░░░░░░░░░░░░░░░┌┘░██" 40 echo "██░░└┐░░░░░░░░░░░░░░░┌┘░░██" 41 echo "██░░┌┘▄▄▄▄▄░░░░░▄▄▄▄▄└┐░░██" 42 echo "██▌░│██████▌░░░▐██████│░▐██" 43 echo "███░│▐███▀▀░░▄░░▀▀███▌│░███" 44 echo "██▀─┘░░░░░░░▐█▌░░░░░░░└─▀██" 45 echo "██▄░░░▄▄▄▓░░▀█▀░░▓▄▄▄░░░▄██" 46 echo "████▄─┘██▌░░░░░░░▐██└─▄████" 47 echo "█████░░▐█─┬┬┬┬┬┬┬─█▌░░█████" 48 echo "████▌░░░▀┬┼┼┼┼┼┼┼┬▀░░░▐████" 49 echo "█████▄░░░└┴┴┴┴┴┴┴┘░░░▄█████" 50 echo "███████▄░░░░░░░░░░░▄███████" 51 echo "██████████▄▄▄▄▄▄▄██████████" 52 echo "███████████████████████████" 53 echo ".....LOADING.....LOADING..." 54 sleep 0.3 55 clear 56 done 57 ini=1 58 else 59 clear 60 echo "_________________________________________" 61 echo "PGUTIL - Programa de Utilidad de Postgres" 62 echo "_________________________________________" 63 echo " MENU PRINCIPAL " 64 echo "_________________________________________" 65 echo "1. Instlar Postgres" 66 echo "2. Desintalar Postgres" 67 echo "3. Sacar un respaldo" 68 echo "4. Restaurar respaldo" 69 echo "5. Salir" 70 71 read -n1 -p "Ingrese una opcion [1-5]: " option 72 73 echo -e "\n\n" 74 75 case $option in 76 1) 77 echo -e "Instalando" 78 sleep 2 79 ;; 80 2) 81 echo "Desintalando" 82 sleep 2 83 ;; 84 3) 85 echo "Respaldando" 86 sleep 2 87 ;; 88 4) 89 echo "Restaurando" 90 sleep 2 91 ;; 92 5) 93 echo "Saliendo" 94 exit 0 95 ;; 96 esac 97 fi 98 done```
# !/bin/bash # Owner @freddymm fixed version by @jordam option=0 ini=0 while : do if [ $ini == 0 ]; then for ((i=0;i<3;i++)) do clear echo"███████████████████████████" echo"███████▀▀▀░░░░░░░▀▀▀███████" echo"████▀░░░░░░░░░░░░░░░░░▀████" echo"███│░░░░░░░░░░░░░░░░░░░│███" echo"██▌│░░░░░░░░░░░░░░░░░░░│▐██" echo"██░└┐░░░░░░░░░░░░░░░░░┌┘░██" echo"██░░└┐░░░░░░░░░░░░░░░┌┘░░██" echo"██░░┌┘ ░░░░░ └┐░░██" echo"██▌░│ ░░░ │░▐██" echo"███░│ ░░ ░░ │░███" echo"██▀─┘░░░░░░░ ░░░░░░░└─▀██" echo"██▄░░░ ░░ ░░ ░░░▄██" echo"████▄─┘ ░░░░░░░ └─▄████" echo"█████░░ ─┬┬┬┬┬┬┬─ ░░█████" echo"████▌░░░ ┬┼┼┼┼┼┼┼ ░░░▐████" echo"█████▄░░░└┴┴┴┴┴┴┴┘░░░▄█████" echo"███████▄░░░░░░░░░░░▄███████" echo"██████████▄▄▄▄▄▄▄██████████" echo"███████████████████████████" echo"LOADING...LOADING...LOADING" sleep 0.3 clear echo"███████████████████████████" echo"███████▀▀▀░░░░░░░▀▀▀███████" echo"████▀░░░░░░░░░░░░░░░░░▀████" echo"███│░░░░░░░░░░░░░░░░░░░│███" echo"██▌│░░░░░░░░░░░░░░░░░░░│▐██" echo"██░└┐░░░░░░░░░░░░░░░░░┌┘░██" echo"██░░└┐░░░░░░░░░░░░░░░┌┘░░██" echo"██░░┌┘▄▄▄▄▄░░░░░▄▄▄▄▄└┐░░██" echo"██▌░│██████▌░░░▐██████│░▐██" echo"███░│▐███▀▀░░▄░░▀▀███▌│░███" echo"██▀─┘░░░░░░░▐█▌░░░░░░░└─▀██" echo"██▄░░░▄▄▄▓░░▀█▀░░▓▄▄▄░░░▄██" echo"████▄─┘██▌░░░░░░░▐██└─▄████" echo"█████░░▐█─┬┬┬┬┬┬┬─█▌░░█████" echo"████▌░░░▀┬┼┼┼┼┼┼┼┬▀░░░▐████" echo"█████▄░░░└┴┴┴┴┴┴┴┘░░░▄█████" echo"███████▄░░░░░░░░░░░▄███████" echo"██████████▄▄▄▄▄▄▄██████████" echo"███████████████████████████" echo".....LOADING.....LOADING..." sleep 0.3 clear done ini=1 else clear echo"_________________________________________" echo"PGUTIL - Programa de Utilidad de Postgres" echo"_________________________________________" echo" MENU PRINCIPAL " echo"_________________________________________" echo"1. Instlar Postgres" echo"2. Desintalar Postgres" echo"3. Sacar un respaldo" echo"4. Restaurar respaldo" echo"5. Salir" read -n1 -p "Ingrese una opcion [1-5]: " option echo-e"\n\n" case $option in 1) echo-e"Instalando" sleep 2 ;; 2) echo"Desintalando" sleep 2 ;; 3) echo"Respaldando" sleep 2 ;; 4) echo"Restaurando" sleep 2 ;; 5) echo"Saliendo" exit 0 ;; esac fi done
Gracias a este curso, podre implementar los aprendido en mi trabajo, un ejemplo:
####### ##### # # #### #### # # ###### ##### ##### ##### # # # # # # # # # # # # # #### #### ##### # ##### # # # ##### # # # # # # # # # # # # # # # # # # # # # # # # # ####### #### #### ##### ###### ##### # ##### ------------------------------------------------ Programa para compilar un Secuenciador en CEDETB ------------------------------------------------ Menu Principal ---------------------------------------- APERTURAS Y ACTUALIACIONES: 1. SEQAPER 2. SEQAPER1 3. SEQAPER2 PLATINO CENTRAL: 4. SEQPLA1 5. SEQPLA2 6. SEQPLA4 7. SEQABDC NETKEY: 8. SEQNKP CHEQUES: 9. SEQSAC1 FRONT UNICO: 10. SEQADT DOMICILIACION: 11. SEQDOM HERA: 12. SEQBPM2 13. SALIR -n1 Ingrese una opcion [1-12]: 1 Compilando... ********************************** * DECOMPILADOR CODIGO INTERMEDIO * * LDCI V4.2 * ********************************** Nota: A partir de la version 4.0 se validara la sintaxis de las Reglas de Secuencia (XML). En caso de error verifica el mensaje que generara el decompilador. Decompilacion: make {archivo Z} {ENVFILE=ruta/TU_ENVFILE} Recuerda: Archivo *.out --> Resumen de la compilacion. Archivo *.err --> Mensajes de error. seqaper,compilando ldci -V -f seqaper -o seqaper -E /opt/s617/005/tuxedo/conf/ENVFILE-SEQ-APER 1>seqaper.out 2>seqaper.err ******************** Deploy File: seqaper Genera respaldo /opt/s617/005/tuxedo/data/seqaper.bk de version anterior... Copia archivo binario seqaper a /opt/s617/005/tuxedo/data Lista de versiones en /opt/s617/005/tuxedo/data... -rwxrwxrwx 1 S617INFR.MANAGER S617INFR 4479 Sep 30 2008 /opt/s617/005/tuxedo/data/seqapert_v2-1 -rwxrwxrwx 1 S617INFR.MANAGER S617INFR 4319 May 20 2009 /opt/s617/005/tuxedo/data/seqaper_200509_v2 -rwxrwxrwx 1 S617INFR.MANAGER S617INFR 0 Oct 1 2012 /opt/s617/005/tuxedo/data/seqaper1.Z -rwxrwxrwx 1 S617INFR.MANAGER S617INFR 48299 May 27 2014 /opt/s617/005/tuxedo/data/seqaper1.D1195.EPARRAZA -rw-rw-rw- 1 D2893.VN37847 D2893 43035 Feb 12 2017 /opt/s617/005/tuxedo/data/seqaperFATCA -rw-rw-rw- 1 D1537.VI04877 D1537 54147 Mar 3 2020 /opt/s617/005/tuxedo/data/seqaper1.bk -rw-rw-rw- 1 D1537.VI04877 D1537 54147 Apr 22 2020 /opt/s617/005/tuxedo/data/seqaper1 -rw-rw-rw- 1 D1537.VI04877 D1537 8399 Nov 10 18:55 /opt/s617/005/tuxedo/data/seqaper2.bk -rw-rw-rw- 1 D1537.VI04877 D1537 8399 Nov 10 20:08 /opt/s617/005/tuxedo/data/seqaper2 -rw-rw-rw- 1 D1537.VI04877 D1537 53931 Dec 14 16:39 /opt/s617/005/tuxedo/data/seqaper.bk -rw-rw-rw- 1 D1537.VI04877 D1537 53931 Dec 17 13:56 /opt/s617/005/tuxedo/data/seqaper gtacl[9]: warning: unable to propagate all environment variables HOLA! ..... ..... ..... ..... ..... ..... Shutting down server processes ... Server Id = 120 Group Id = SEQAPER Machine = CI: shutdown succeeded Server Id = 110 Group Id = SEQAPER Machine = CI: shutdown succeeded Server Id = 100 Group Id = SEQAPER Machine = CI: shutdown succeeded 4 processes stopped. 7 RECORDS TRANSFERRED gtacl[9]: warning: unable to propagate all environment variables ..... ..... ..... ..... ..... ..... ..... INFO: NonStop Tuxedo for HP NonStop server TNS/E, R8.0 V1 Update 3, 32-bit Booting server processes ... exec /opt5/s617/005/tuxedo80/bin/seqcr003 -A : on CI -> started seqaper; waiting on server...ready exec /opt5/s617/005/tuxedo80/bin/seqcr003 -A : on CI -> started SEQAPER1; waiting on server...ready exec /opt5/s617/005/tuxedo80/bin/seqcr003 -A : on CI -> started seqaper2; waiting on server...ready 4 processes started. 11 RECORDS TRANSFERRED
¿Que tiene de mal mi código?
# ! /bin/bash 2 x=0 3 while : 4 do 5 clear 6 echo "_________________________________________" 7 echo "PGUTIL - Programa de Utilidad de Postgres" 8 echo "_________________________________________" 9 echo " MENU PRINCIPAL " 10 echo "_________________________________________" 11 echo "1. Instlar Postgres" 12 echo "2. Desintalar Postgres" 13 echo "3. Sacar un respaldo" 14 echo "4. Restaurar respaldo" 15 echo "5. Salir" 16 17 read -n1 -p "Ingrese una opcion[1-5]" x 18 19 case $x in 20 1) 21 echo "instalar Postgres..." 22 sleep 3 23 ;; 24 2) 25 echo "Desintalar Postgres..." 26 sleep 3 27 ;; 28 3) 29 echo "Sacar respaldo..." 30 sleep 3 31 ;; 32 4) 33 echo "Restaurar respaldo" 34 sleep 3 35 ;; 36 5) 37 echo "salir del programa" 38 exit 0 39 ;; 40 esac 41 done``` lo reviso y lo reviso pero no le encuentro nada mas sin embargo no corre. AUXILIO!!!!!!!
Hola amigo, creo que es cuestión de espacios, revisa el código adjunto el cual agregue espacios y otra opcion de mas. Espero te ayude!
# ! /bin/bash x=1 while : do clear echo "_________________________________________" echo "PGUTIL - Programa de Utilidad de Postgres" echo "_________________________________________" echo " MENU PRINCIPAL " echo "_________________________________________" echo "1. Instlar Postgres" echo "2. Desintalar Postgres" echo "3. Sacar un respaldo" echo "4. Restaurar respaldo" echo "5. Salir" read -n1 -p "Ingrese una opcion [1-5] " x case $x in 1) echo -e "\ninstalar Postgres..." sleep 3 ;; 2) echo -e "\nDesintalar Postgres..." sleep 3 ;; 3) echo -e "\nSacar respaldo..." sleep 3 ;; 4) echo -e "\nRestaurar respaldo" sleep 3 ;; 5) echo -e "\nsalir del programa" exit 0 ;; *) clear echo -e "\nOpcion no valida!" exit 0 ;; esac done
Listo
#!/bin/bash # Programa que permite manejar las utilidades de Postgres # DBZ opcion=0 # chars="/-\|" # while :; do # for (( i=0; i<${#chars}; i++ )); do # sleep 0.5 # echo -en "${chars:$i:1}" "\r" # done # done function ProgressBar { # Process data let _progress=(${1}*100/${2}*100)/100 let _done=(${_progress}*4)/10 let _left=40-$_done # Build progressbar string lengths _fill=$(printf "%${_done}s") _empty=$(printf "%${_left}s") # 1.2 Build progressbar strings and print the ProgressBar line # 1.2.1 Output example: # 1.2.1.1 Progress : [########################################] 100% printf "\rProgress : [${_fill// /\#}${_empty// /-}] ${_progress}%%" } # Variables _start=1 # This accounts as the "totalState" variable for the ProgressBar function _end=100 # Proof of concept echo "Cargando Interfaz....." for number in $(seq ${_start} ${_end}) do sleep 0.001 ProgressBar ${number} ${_end} done while : do #Limpiar la pantalla clear #Desplegar el menú de opciones echo "*****************************************" echo "PGUTIL - Programa de Utilidad de Postgres" echo "*****************************************" echo "**************MENÚ PRINCIPAL*************" echo "*****************************************" echo "1. -Instalar Postgres." echo "2. -Desinstalar Postgres." echo "3. -Sacar un respaldo." echo "4. -Restaurar respaldo." echo "5. -Salir." echo "*****************************************" #Leer los datos del usuario - capturar información read -n1 -p "Ingrese una opción [1-5]:" opcion #Validar la opción ingresada case $opcion in 1) echo -e "\nInstalar postgres...." # Proof of concept for number in $(seq ${_start} ${_end}) do sleep 0.01 ProgressBar ${number} ${_end} done #sleep 3 ;; 2) echo -e "\nDesinstalar postgres...." for number in $(seq ${_start} ${_end}) do sleep 0.05 ProgressBar ${number} ${_end} done ;; 3) echo -e "\nSacar respaldo...." for number in $(seq ${_start} ${_end}) do sleep 0.0001 ProgressBar ${number} ${_end} done ;; 4) echo -e "\nRestaurar respaldo...." for number in $(seq ${_start} ${_end}) do sleep 0.0001 ProgressBar ${number} ${_end} done ;; 5) echo "\nSalir del Programa...." sleep 0.01 exit 0 ;; esac done
Mi practica, en el trabajo suelo instalar maquinas para para agregar agent zabbix y pienso que esto podria facilitarme la instalacion.
#! /bin/bash
opcion=0
while :
do
# LIMPIAR LA PANTALL
CLEAR
# DESPLEGAR MENU DE OPCIONES
echo "-----------------------------------------------------"
echo "PROGRAMA DE UTILIDADES AGENTE PROXY"
echo "-----------------------------------------------------"
echo " MENU PRINCIPAL "
echo "-----------------------------------------------------"
echo "1. INSTALAR ZABBIX AGENT2"
echo "2. DESINTALAR ZABBIX AGENT2"
echo "3. INSTALAR ZABBIX PROXY + AGENT2"
echo "4. SALIR "
echo "-----------------------------------------------------"
# LEER LOS DATOS DEL USUARIO PARA CAPTURAR INFORMACION
read -n1 -p "ingrese una opcion [1-4]" opcion
# VALIDAR LA OPCION INGRESADA
case $opcion in
1)
echo "INSTALANDO ZABBIX AGENT2"
sleep 3
;;
2)
echo "DESINSTALAR ZABBIX AGENT2 "
sleep 3
;;
3)
echo "INSTALANDO ZABBIX PROXY + AGENT2"
sleep 3
;;
4)
echo "SALIR DEL PROGRAMA "
exit 0
;;
esac
read -p "presiona enter para continuar"
done
while :
do
# LIMPIAR LA PANTALL
CLEAR
# DESPLEGAR MENU DE OPCIONES
echo "-----------------------------------------------------"
echo "PROGRAMA DE UTILIDADES AGENTE PROXY"
echo "-----------------------------------------------------"
echo " MENU PRINCIPAL "
echo "-----------------------------------------------------"
echo "1. INSTALAR ZABBIX AGENT2"
echo "2. DESINTALAR ZABBIX AGENT2"
echo "3. INSTALAR ZABBIX PROXY + AGENT2"
echo "4. SALIR "
echo "-----------------------------------------------------"
# LEER LOS DATOS DEL USUARIO PARA CAPTURAR INFORMACION
read -n1 -p "ingrese una opcion [1-4]" opcion
# VALIDAR LA OPCION INGRESADA
case $opcion in
1)
echo "INSTALANDO ZABBIX AGENT2"
sleep 3
;;
2)
echo "DESINSTALAR ZABBIX AGENT2 "
sleep 3
;;
3)
echo "INSTALANDO ZABBIX PROXY + AGENT2"
sleep 3
;;
4)
echo "SALIR DEL PROGRAMA "
exit 0
;;
esac
read -p "presiona enter para continuar"
done
#! /bin/bash opcion=0 while : do # LIMPIAR LA PANTALL CLEAR # DESPLEGAR MENU DE OPCIONES echo "-----------------------------------------------------" echo "PROGRAMA DE UTILIDADES AGENTE PROXY" echo "-----------------------------------------------------" echo " MENU PRINCIPAL " echo "-----------------------------------------------------" echo "1. INSTALAR ZABBIX AGENT2" echo "2. DESINTALAR ZABBIX AGENT2" echo "3. INSTALAR ZABBIX PROXY + AGENT2" echo "4. SALIR " echo "-----------------------------------------------------" # LEER LOS DATOS DEL USUARIO PARA CAPTURAR INFORMACION read -n1 -p "ingrese una opcion [1-4]" opcion # VALIDAR LA OPCION INGRESADA case $opcion in 1) echo "INSTALANDO ZABBIX AGENT2" sleep 3 ;; 2) echo "DESINSTALAR ZABBIX AGENT2 " sleep 3 ;; 3) echo "INSTALANDO ZABBIX PROXY + AGENT2" sleep 3 ;; 4) echo "SALIR DEL PROGRAMA " exit 0 ;; esac read -p "presiona enter para continuar" done ```#! /bin/bash opcion=0 while : do   \# LIMPIAR LA PANTALL   CLEAR   \# DESPLEGAR MENU DE OPCIONES   echo "-----------------------------------------------------"   echo "PROGRAMA DE UTILIDADES AGENTE PROXY"   echo "-----------------------------------------------------"   echo " MENU PRINCIPAL "   echo "-----------------------------------------------------"   echo "1. INSTALAR ZABBIX AGENT2"   echo "2. DESINTALAR ZABBIX AGENT2"   echo "3. INSTALAR ZABBIX PROXY + AGENT2"   echo "4. SALIR "   echo "-----------------------------------------------------"   \# LEER LOS DATOS DEL USUARIO PARA CAPTURAR INFORMACION   read -n1 -p "ingrese una opcion \[1-4]" opcion   \# VALIDAR LA OPCION INGRESADA   case $opcion in   1\)   echo "INSTALANDO ZABBIX AGENT2"   sleep 3   ;;   2\)   echo "DESINSTALAR ZABBIX AGENT2 "   sleep 3   ;;   3\)   echo "INSTALANDO ZABBIX PROXY + AGENT2"   sleep 3   ;;   4\)   echo "SALIR DEL PROGRAMA "   exit 0   ;;   esac   read -p "presiona enter para continuar"   done