Aรบn no tienes acceso a esta clase

Crea una cuenta y continรบa viendo este curso

Curso de Programaciรณn en Bash Shell

Curso de Programaciรณn en Bash Shell

Marco Antonio Toscano Freire

Marco Antonio Toscano Freire

Menรบ de Opciones

28/43
Recursos

Aportes 18

Preguntas 2

Ordenar por:

ยฟQuieres ver mรกs aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesiรณn.

**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```

Vamos al siguiente tema XD

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

lo unico que no entendi fue โ€œel temaโ€ de usar โ€œ;;โ€ despues de cada sleep

Pรฉsimo video โ€ฆ 36 veces diciendo โ€œTEMAโ€ โ€ฆ confunde en la instrucciรณn

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

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:

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 

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?

Programar este tipo de scripts en la interfaz de la terminal me hace acordar mucho a la serie โ€˜Halt and Catch Fireโ€™ ๐Ÿ˜‚๐Ÿ˜

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

<h1>! /bin/bash</h1> <h1>Programa que permite manejar las utilidades de Postgres</h1> <h1>Autor : LTAQUE</h1>

opcion=0

while :
do
#Limpiar Pantalla
clear
echo "-----------------------------------------------"
echo "| PGUTIL - Programa de Utilidades de Postgres |"
echo "_______________________________________________"
echo " MENU PRINCIPAL "
echo "-----------------------------------------------"
echo "1. Instalar Postgres "
echo "2. Desinstalar Postgres"
echo "3. Sacar Respaldo "
echo "4. Registrar Respaldo"
echo โ€œ5. Salirโ€

    #Leer los datos capturados por el usuario
    read -n1 -p "Ingrese Una Opcion [1-5] : " opcion

    #Validar Opcion a 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 "\nRestaurar Respaldo........."
                    sleep 3
                    ;;
            5)
                    exit 0
                    ;;

gracias

Excelente forma de maquetar un menรบ en bash!

Tema de Menu de opciones

Se ve muy genial el tema de usar ese menu

#!/bin/bash

option=0

while :
do
    clear
    echo "-------------------------------------"
    echo "PGUTIL - PostgreSQL utilities program"
    echo "-------------------------------------"
    echo "              MAIN MENU              "
    echo "-------------------------------------"
    echo "1. Install PostgreSQL"
    echo "2. Uninstall PostgreSQL"
    echo "3. Backup"
    echo "4. Restore Backup"
    echo "5. Exit"

    read -n1 -p "Enter an option [1-5]: " option

    case $option in
        1)
            echo -e "\nInstalling PostgreSQL..."
            sleep 3
            ;;
        2)
            echo -e "\nUninstalling PostgreSQL..."
            sleep 3
            ;;
        3)
            echo -e "\nBackup..."
            sleep 3
            ;;
        4)
            echo -e "\nRestoring backup..."
            sleep 3
            ;;
        5)
            echo -e "\nExiting..."
            exit 0
            ;;
    esac
done