Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- # menu de opciones
- echo "
- 1) Opción 1
- 2) Opción 2
- 3) Opción 3
- q) Salir"
- # input del programa
- read -p "Elgija una opcion: " OPCION
- # mientras que la variable $OPCION determina que hacer en caso de coicidencia
- # dentro de la sentencia 'if - fi'
- # la sentencia 'while - done' ejecuta ciclicamente lo que contenga dentro
- # en este caso con la expresion 'while true' creamos un ciclo infinito
- while true; do
- # la sentenecia 'if' se ejecuta ciclicamente dentro del while
- # primero validamos el input
- # primer validacion por cantidad de caracteres en la respuesta
- # el cual siempre debe ser uno.
- CHARS=$( echo -n $OPCION | wc -c)
- if [ $CHARS != 1 ]; then
- clear # limpiamos la pantalla
- echo "Selección incorrecta, eliga una opción a continuación:
- 1) Opción 1
- 2) Opción 2
- 3) Opción 3
- q) Salir"
- read -p "Elgija una opcion: " OPCION
- elif [ $OPCION = 1 ]; then
- echo "Uted seleccionó la opcion 1"
- echo "se sales con 'exit 0'"
- exit 0 # interrumpo el programa
- # para salir de un bucle hay varias formas:
- # Con la instrucción 'exit' indicamos que termina el programa
- # con la instrucción 'break' se sale del bucle, pero se sigue ejecutando
- # el resto del script
- elif [ $OPCION = 2 ]; then
- echo "Uted seleccionó la opcion 2"
- break # salimos del bucle y continuamos con la ejecución del resto del script
- elif [ $OPCION = 3 ]; then
- echo "Uted seleccionó la opcion 3"
- echo "se sale con 'exit 1'"
- exit 1
- elif [ $OPCION = q ]; then
- echo "Uted seleccionó la opcion q"
- echo "se sale con 'exit 1'"
- exit 1
- # Segunda validacion
- # La expresion regular
- # [123q]
- # [] establece un caracter
- # '123q' que ese caracater establecido puede ser un '1' o '2' o '3' o la letra 'q'
- # la comparacion '=~' se usa para comparar igualdad cuando se usan expresiones regulares
- # '! [[ "$OPCION" =~ ^[123q] ]]' esta es la comparación, notese el sigo '!' al prinicpio
- # invertimos la expresion a "si $OPCION no es igual"
- # entonces ahora si podemos validar el input
- # si $OPCION NO ES igual a 1, 2, 3 o q devuelve TRUE y se ejecuta lo que viene despues del then
- elif ! [[ "$OPCION" =~ [123q] ]]; then
- clear # limpiamos la pantalla
- echo "Selección incorrecta, eliga una opción a continuación:
- 1) Opción 1
- 2) Opción 2
- 3) Opción 3
- q) Salir"
- read -p "Elgija una opcion: " OPCION
- fi
- done
- # esto se ejecuta por que se seleccionó la opción 2, que termina con un 'break'
- # por lo que se sale del bucle y se continua la ejecución normal del script
- echo "este mesnaje es por que selecciono la opcion 2 y ha salido del bucle"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement