Advertisement
Sergio_Istea

menu-ciclico.sh

May 4th, 2021 (edited)
289
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 2.60 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3.  
  4. # menu de opciones
  5. echo "
  6. 1) Opción 1
  7. 2) Opción 2
  8. 3) Opción 3
  9. q) Salir"
  10.  
  11. # input del programa
  12. read -p "Elgija una opcion: " OPCION
  13.  
  14.  
  15.  
  16. # mientras que la variable $OPCION determina que hacer en caso de coicidencia
  17. # dentro de la sentencia 'if - fi'
  18. # la sentencia 'while - done' ejecuta ciclicamente lo que contenga dentro
  19. # en este caso con la expresion 'while true' creamos un ciclo infinito
  20.  
  21. while true; do
  22.  
  23. # la sentenecia 'if' se ejecuta ciclicamente dentro del while
  24. # primero validamos el input
  25. # primer validacion por cantidad de caracteres en la respuesta
  26. # el cual siempre debe ser uno.
  27.  
  28. CHARS=$( echo -n $OPCION | wc -c)
  29.  
  30. if [ $CHARS != 1 ]; then
  31.  
  32.     clear # limpiamos la pantalla  
  33.     echo "Selección incorrecta, eliga una opción a continuación:
  34.     1) Opción 1
  35.     2) Opción 2
  36.     3) Opción 3
  37.     q) Salir"
  38.     read -p "Elgija una opcion: " OPCION
  39.  
  40. elif [ $OPCION = 1 ]; then
  41.  
  42.     echo "Uted seleccionó la opcion 1"
  43.     echo "se sales con 'exit 0'"
  44.     exit 0 # interrumpo el programa
  45.  
  46.     # para salir de un bucle hay varias formas:
  47.     # Con la instrucción 'exit' indicamos que termina el programa
  48.     # con la instrucción 'break' se sale del bucle, pero se sigue ejecutando
  49.     # el resto del script
  50.        
  51.  
  52. elif [ $OPCION = 2 ]; then
  53.  
  54.     echo "Uted seleccionó la opcion 2"
  55.     break # salimos del bucle y continuamos con la ejecución del resto del script
  56.  
  57. elif [ $OPCION = 3 ]; then
  58.  
  59.     echo "Uted seleccionó la opcion 3"
  60.     echo "se sale con 'exit 1'"
  61.     exit 1
  62.  
  63.  
  64. elif [ $OPCION = q ]; then
  65.     echo "Uted seleccionó la opcion q"
  66.     echo "se sale con 'exit 1'"
  67.     exit 1
  68.  
  69. # Segunda validacion
  70. # La expresion regular
  71. # [123q]
  72. # [] establece un caracter
  73. # '123q' que ese caracater establecido puede ser un '1' o '2' o '3' o la letra 'q'
  74. # la comparacion '=~' se usa para comparar igualdad cuando se usan expresiones regulares
  75. # '! [[ "$OPCION" =~ ^[123q] ]]' esta es la comparación, notese el sigo '!' al prinicpio
  76. # invertimos la expresion a "si $OPCION no es igual"
  77. # entonces ahora si podemos validar el input
  78. # si $OPCION NO ES igual a 1, 2, 3 o q devuelve TRUE y se ejecuta lo que viene despues del then
  79.  
  80. elif ! [[ "$OPCION" =~ [123q] ]]; then
  81.  
  82.     clear # limpiamos la pantalla  
  83.     echo "Selección incorrecta, eliga una opción a continuación:
  84.     1) Opción 1
  85.     2) Opción 2
  86.     3) Opción 3
  87.     q) Salir"
  88.     read -p "Elgija una opcion: " OPCION
  89. fi
  90. done
  91.  
  92.  
  93. # esto se ejecuta por que se seleccionó la opción 2, que termina con un 'break'
  94. # por lo que se sale del bucle y se continua la ejecución normal del script
  95.  
  96. echo "este mesnaje es por que selecciono la opcion 2 y ha salido del bucle"
  97.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement