Tutoriales

Cree un script Bash interactivo con los mensajes «Sí», «No» y «Cancelar».

Los scripts de shell interactivos pueden hacer que las tareas de administración del sistema sean más eficientes y fáciles de usar. Al combinar las indicaciones Sí, No y Cancelar, puede evitar acciones accidentales asegurándose de que sus scripts solo se ejecuten con la confirmación explícita del usuario. En esta guía, aprenderemos cómo Cree scripts Bash interactivos usando las indicaciones Sí, No y Cancelar en linux.

introducir

Cuando escribe scripts de shell Bash, puede hacerlos más útiles solicitando información al usuario. Esto hace que el script sea más interactivo y fácil de usar.

Una forma es utilizar read comando, que le permite solicitar a los usuarios información y almacenar sus respuestas en variables.

mediante combinación read Comandos con declaraciones condicionales, como if y case declaración, puede hacer que el script realice diferentes acciones según la respuesta del usuario.

En este tutorial cubriremos:

  • qué es read Orden,
  • cómo utilizar read el comando captura la entrada del usuario,
  • usar if y case Declaraciones que manejan diferentes respuestas,
  • y ejemplos prácticos de creación de scripts Bash interactivos.

Después de leer esta guía, podrá escribir scripts Bash interactivos que soliciten a los usuarios continuar, cancelar o cancelar una operación.

¿Qué es el comando de lectura en Bash?

este read Un comando en Bash que lee una línea de entrada de un usuario o archivo y la asigna a una o más variables. Este comando es útil en scripts de shell para obtener entradas del usuario o procesar archivos de texto.

cómo read trabajo de comando

cuando usas read, el script se detiene y espera a que el usuario ingrese el contenido y presione Entrar. Todo lo que ingresa el usuario se guarda en una variable que puede usar más adelante en su secuencia de comandos.

¿Por qué es útil?

  • Hace que su guión sea interactivo.
  • Puede obtener información de los usuarios para personalizar el funcionamiento de su script.
  • Es genial para crear menús o pedir confirmación antes de hacer algo importante.

Ejemplos de uso

  • Solicite al usuario su nombre para personalizar el mensaje.
  • Obtenga una respuesta de sí o no antes de proceder con la acción.
  • Cree un menú simple donde los usuarios puedan seleccionar opciones.

conocimiento básico read Orden

1. gramática:

read [options] variable_name

Opciones:

  • -r: Evita que las barras invertidas se interpreten como caracteres de escape. ejemplo: read -r response
  • -p: Le permite evitar mostrar mensajes de aviso echo. ejemplo: read -p "What's your name? " name
  • -s: Oculta el contenido ingresado por el usuario (aplicable a contraseñas). ejemplo: read -s -p "Enter your password: " password
  • -t: establece el límite de tiempo para la entrada.
  • -n: limita la cantidad de caracteres que un usuario puede ingresar.

2. Leer la entrada del usuario:

Los usos más comunes son read El comando solicita información al usuario durante la ejecución del script.

Eche un vistazo al siguiente ejemplo:

echo "Please enter your name:"
read name
echo "Hello, $name!"
Leer la entrada del usuario

aquí,

  • echo "Please enter your name:" Mostrar mensaje de aviso.
  • read name Espere a que el usuario escriba y presione Entrar. La entrada se almacena en una variable. name.
  • echo "Hello, $name!" Mostrarles la entrada del usuario.

3. Consejos de uso:

puedes usarlo -p Utilice el uso para mostrar opciones de indicaciones echo Orden

read -p "How old are you? " age
echo "I am $age years old."
Usar sugerencias
Usar sugerencias

4. Leer múltiples variables:

Puede leer múltiples entradas en diferentes variables en una línea.

echo "Enter your first name and last name:"
read first_name last_name
echo "Hello, $first_name $last_name!"
Leer múltiples variables
Leer múltiples variables

Aquí hay otro ejemplo de lectura de múltiples valores:

read -p "Enter your favorite color and animal: " color animal
echo "Your favorite color is $color and your favorite animal is $animal."

5. Utilice valores predeterminados:

Si el usuario no ingresa nada, puede proporcionar un valor predeterminado.

read -p "Enter your favorite blog [OSTechNix]: " blog
blog=${blog:-OSTechNix}
echo "My favorite blog is $blog."
Usar valor predeterminado
Usar valor predeterminado

6. Establecer límite de tiempo de entrada:

Puede establecer un límite de tiempo para la entrada del usuario -t Las señales son las siguientes:

read -t 5 -p "Quick! Type your lucky number (5 seconds): " lucky_number
echo "Your lucky number is $lucky_number"

Si no ingresa nada en 5 segundos, read El comando saldrá directamente.

Establecer límite de tiempo de entrada
Establecer límite de tiempo de entrada

7. Leer contraseña (entrada oculta):

puedes usarlo -s Bandera utilizada para obtener información confidencial como contraseñas. No verá ninguna entrada al ingresar su contraseña. De todos modos, simplemente ingrese su contraseña y presione ENTER.

read -s -p "Enter a password: " password 
echo # This just prints a newline
echo "Password received (but not shown for security)"

Este es un fragmento de muestra read El comando solicita al usuario que confirme si desea continuar con la actualización del sistema, abortar o cancelar la operación:

prompt_for_input() {
    while true; do
        echo -n "Do you want to update the system? (y/n/c): "
        read -r response
        case "$response" in
            [Yy]* )
                echo "You selected Yes."
                return 0
                ;;
            [Nn]* )
                echo "You selected No."
                return 1
                ;;
            [Cc]* )
                echo "You selected Cancel."
                return 2
                ;;
            * )
                echo "Invalid input. Please enter y, n, or c."
                ;;
        esac
    done
}

Esto es lo que hace el script anterior:

  • echo -n "Do you want to update the system? (y/n/c): " Muestra el mensaje sin un carácter de nueva línea al final.
  • read -r response Espera a que el usuario ingrese una respuesta (y, n o c) y la almacena en una variable response.
  • este case El procesamiento de declaraciones responde y decide qué acciones tomar en función de la entrada del usuario.

Como se puede ver, read Los comandos hacen que sus scripts sean interactivos. Puede obtener información de los usuarios para personalizar el funcionamiento de su script. Es genial para crear menús o pedir confirmación antes de hacer algo importante.

Cree scripts Bash interactivos usando operaciones Sí, No y Cancelar

Aquí he dado tres scripts de ejemplo para crear scripts interactivos. read Comandos y declaraciones condicionales.

Ejemplo 1: script de shell interactivo para actualizar sistemas basados ​​en Debian

Suponga que desea actualizar su servidor Debian Linux. Antes de continuar con la actualización, desea solicitarle al usuario que confirme si desea continuar, cancelar o cancelar la operación.

A continuación se muestra un script Bash de ejemplo para esta tarea:

Descripción del guión:

1. Preguntar al usuario: El script solicita al usuario que confirme si desea actualizar el paquete de software.
2. Capture la entrada del usuario: este read El comando captura la entrada del usuario.
3. Entrada del proceso: este case La declaración maneja la respuesta del usuario, determinando su elección de sí, no o cancelar.
4. Actualizar software:

  • Si el usuario selecciona Sí ([Yy]*), el script continúa usando actualizaciones de software sudo apt-get update && sudo apt-get upgrade -y.
  • Si el usuario selecciona No ([Nn]*), el script imprime un mensaje indicando que la actualización ha sido cancelada.
  • Si el usuario elige cancelar ([Cc]*), el script imprime un mensaje indicando que la actualización fue cancelada.
  1. Manejo de entradas no válidas: Si el usuario ingresa algo distinto de y, n o c, el script le preguntará nuevamente hasta que proporcione una respuesta válida.

Para usarlo, simplemente copie el código anterior en un archivo de texto, por ejemplo. debupdate.sh. Hazlo ejecutable:

chmod +x debupdate.sh

Ejecute el script usando el comando:

./debupdate.sh

salida de muestra:

El script continuará actualizando el sistema solo cuando el usuario ingrese y.

Do you want to update the software package? (y/n/c): y
You selected Yes.
Proceeding with the software update...
[sudo] password for ostechnix:
Hit:5 bullseye InRelease
Get:6 bullseye-updates InRelease [44.1 kB]
Get:7 bullseye-backports InRelease [49.0 kB]
Hit:9 bullseye-security InRelease
Fetched 95.5 kB in 11s (8,768 B/s)
Reading package lists... Done
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Calculating upgrade... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Software update completed successfully.

Este es sólo un ejemplo para ilustrar el propósito. read Orden. Puede resultar útil para los usuarios que necesitan asegurarse de que solo se actualicen las aplicaciones. confirmación clara.

Por supuesto, no es necesario escribir un guión para esto. sudo apt-get update && sudo apt-get upgrade Orden. Es solo una línea de código que puedes ejecutar en tu terminal, no se requiere script.

Ejemplo 2: eliminar archivos de registro antiguos

Suponga que es administrador del sistema y necesita escribir un script para eliminar archivos de registro antiguos del servidor. Quiere asegurarse de que los usuarios comprendan las consecuencias de ejecutar el script y darles la oportunidad de cancelar la operación.

advertir: No ejecute este script a ciegas en su sistema. Este script eliminará archivos de más de 30 días de su computadora /var/log/ Tabla de contenido. Esto es sólo para fines de demostración. Debe cambiar la ubicación del directorio antes de ejecutar.

Aquí hay un script de ejemplo:

En este ejemplo, el guión:

  1. Advierta a los usuarios de las consecuencias de ejecutar el script.
  2. Pídale al usuario que confirme si desea continuar.
  3. Si el usuario ingresa «y», el script eliminará todos los archivos de registro de más de 30 días usando el siguiente comando find Orden.
  4. Si el usuario ingresa «n», el script cancelará la operación y mostrará un mensaje.
  5. Si el usuario ingresa «c», el script se cerrará sin realizar ninguna acción.
  6. Si el usuario ingresa algo más, el script mostrará un mensaje de error y le avisará nuevamente.

Este script proporciona una red de seguridad para evitar la eliminación accidental de archivos de registro importantes y brinda a los usuarios la oportunidad de reconsiderar sus acciones.

Este script no sirve sólo para eliminar archivos de registro antiguos. Puedes usar este script Buscar y eliminar archivos con más de X días desde cualquier directorio. Simplemente edite este script y cambie la ubicación del directorio de registro a una ubicación diferente.

Ejemplo 3: copiar archivos de un directorio a otro

Suponga que está escribiendo un script para copiar archivos desde un directorio de origen a un directorio de destino. Desea pedirle al usuario que confirme la operación antes de continuar, especialmente si el directorio de destino ya contiene un archivo con el mismo nombre.

Aquí hay un script de ejemplo:

valor de actualización SOURCE_DIR y DEST_DIR en tu guión. Además, asegúrese de que el usuario tenga los permisos adecuados para la ubicación de destino.

En este ejemplo, el guión:

  1. Notificar al usuario de la operación y sus posibles consecuencias (sobrescribiendo el archivo).
  2. Pídale al usuario que confirme si desea continuar.
  3. Si el usuario ingresa «y», el script copiará todos los archivos del directorio de origen al directorio de destino usando el siguiente comando cp Orden.
  4. Si el usuario ingresa «n», el script cancelará la operación y mostrará un mensaje.
  5. Si el usuario ingresa «c», el script se cerrará sin realizar ninguna acción.
  6. Si el usuario ingresa algo más, el script mostrará un mensaje de error y le avisará nuevamente.

Este script proporciona una red de seguridad para evitar la sobrescritura accidental de archivos y permite a los usuarios reconsiderar sus acciones.

en conclusión

En este tutorial, aprenderemos cómo crear un script de shell Bash interactivo que haga a los usuarios preguntas de «sí», «no» o «cancelar» y luego utilice sus respuestas para tomar decisiones.

Para fines de demostración utilizamos read El comando obtiene la entrada del usuario y luego usa if y case declaraciones para evaluar la respuesta del usuario y tomar las medidas adecuadas.

Esta no es la única forma de crear scripts de shell interactivos en Linux, pero es un método eficaz. Hay otras formas, pero prefiero usar read Simplicidad de comandos.


¿Estás interesado en las secuencias de comandos Bash? Hemos publicado una serie de tutoriales de scripting Bash para usuarios principiantes e intermedios. Consulte los siguientes enlaces para ayudarle a aprender a utilizar scripts Bash:


LEER  Cómo agregar y habilitar el repositorio de paquetes comunitarios de Proxmox en el servidor Proxmox VE 8

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba