Aquí vamos a discutir cómo crear un script de shell controlado por menú. Primero comprendamos qué significa controlado por menús y por qué deberíamos aprender a crear un script de shell controlado por menús. Básicamente, un script de shell controlado por menú proporciona a los usuarios más opciones/interfaz interactiva. En términos sencillos, el guión de shell es similar al menú del restaurante, suponga que está en su restaurante favorito y solicitó un menú del restaurante, para que pueda elegir su plato favorito. De manera similar, un script de shell controlado por menú tiene el mismo propósito.
Pongamos un ejemplo para una mejor comprensión:
Usando la declaración case esac para crear un script de shell controlado por menú:
Una declaración de caso es similar a una declaración de cambio de otros idiomas. La declaración de caso es una alternativa a las declaraciones if-then-else de varios niveles. Al usar la declaración de caso, podemos evitar el uso de múltiples if-then-else y reducir el tamaño del script. El caso se utiliza para hacer coincidir varios valores con un valor.
Sintaxis: case $condición en
patrón1 Declaraciones a ejecutar si patrón1 coincide;;
patrón2 Declaraciones a ejecutar si patrón2 coincide;;
*) Caso por defecto;;
esac
Aquí, case es palabra clave y $condition es el valor de entrada con el que hacemos coincidir varios otros valores. El patrón puede ser cualquier cosa, pueden ser letras, números enteros o expresiones regulares. Un patrón termina con el paréntesis de cierre ‘ ) ‘. Si el patrón coincide con el valor de entrada, se ejecutarán las declaraciones seguidas por el patrón y las declaraciones terminarán con dos puntos y coma ‘ ;; ‘. *) es el caso predeterminado, es decir, si la entrada del usuario no coincide con ninguno de los patrones dados, se ejecutarán las instrucciones seguidas por este patrón. Para finalizar la declaración del caso se utiliza la palabra clave esac . Es el reverso de la palabra clave ‘case’.
Pasos incluidos:
- Cree un menú personalizado usando la instrucción echo y muestre el menú
- Cree un ciclo infinito usando la declaración while que acepte la opción de entrada del usuario y genere la salida continuamente hasta que la entrada del usuario coincida con el patrón de salida.
- Tome la entrada del usuario usando la declaración de lectura y guárdela en una variable.
- Use la declaración de caso para verificar si la entrada coincide con el patrón.
- Crea un patrón personalizado.
- Salga de la declaración del caso usando la palabra clave esac .
#!/bin/bash # creating a menu with the following options echo "SELECT YOUR FAVORITE FRUIT"; echo "1. Apple" echo "2. Grapes" echo "3. Mango" echo "4. Exit from menu " echo -n "Enter your menu choice [1-4]: " # Running a forever loop using while statement # This loop will run until select the exit option. # User will be asked to select option again and again while : do # reading choice read choice # case statement is used to compare one value with the multiple cases. case $choice in # Pattern 1 1) echo "You have selected the option 1" echo "Selected Fruit is Apple. ";; # Pattern 2 2) echo "You have selected the option 2" echo "Selected Fruit is Grapes. ";; # Pattern 3 3) echo "You have selected the option 3" echo "Selected Fruit is Mango. ";; # Pattern 4 4) echo "Quitting ..." exit;; # Default Pattern *) echo "invalid option";; esac echo -n "Enter your menu choice [1-4]: " done
Producción:
En este script, hemos creado un menú simple usando declaraciones de eco . while : do se usa para crear un ciclo infinito para solicitar la entrada del usuario continuamente, este ciclo while terminará cuando el usuario ingrese la opción 4 (Salir). En este ciclo while, tomamos la entrada del usuario usando la palabra clave de lectura y la almacenamos en una variable de elección. Luego estamos usando la declaración de caso para verificar que el valor de la variable de elección coincida con cualquiera de los patrones dados.
Publicación traducida automáticamente
Artículo escrito por amnindersingh1414 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA