Bash espera a que se presione la tecla

Bash Wait Keypress



El comando `read` se usa para tomar la entrada del usuario en un script bash. Podemos tomar entradas en el script bash usando varios tipos de opciones con el comando de lectura. A veces necesitamos escribir el script de tal manera que el script se ejecute hasta que se presione una tecla específica o el script en particular se ejecute en función de la tecla específica o el programa esperará la cantidad de tiempo específica hasta que se presione cualquier tecla. En este tutorial se muestra cómo puede escribir un script bash para esperar una clave en particular o cualquier clave para algunas tareas utilizando diferentes ejemplos.

Ejemplo 1:

Cree un archivo bash con la siguiente secuencia de comandos. Cuando ejecute el script, continuará hasta que el usuario presione cualquier tecla. La secuencia de comandos esperará la entrada del usuario cada 3 segundos y si el usuario no presiona ninguna tecla, imprimirá el mensaje. esperando la pulsación de la tecla .







#! / bin / bash
echo 'Pulse cualquier tecla para continuar'
tiempo [ cierto ];hacer
leer -t 3 -norte 1
si [ $?=0 ];luego
Salida;
demás
echo 'esperando la pulsación de tecla'
ser
hecho

Ejecute el script.



$intentokey1.sh

Producción:







Ejemplo # 2:

Cree un archivo bash con la siguiente secuencia de comandos. En este ejemplo se usa un bucle while infinito que terminará cuando el usuario presione 'q'. Si el usuario presiona cualquier tecla sin 'q', el valor de la variable del contador aumentará en 1 e imprimirá el valor.

#! / bin / bash
echo 'Presione' q 'para salir'
contar=0
tiempo: ;hacer
leer -norte 1para<&1
si [[ $ k= q]];luego
printf ' orteSalir del programa orte'
rotura
demás
((contar=$ count+1))
printf ' orteIterar por$ countveces orte'
echo 'Presione' q 'para salir'
ser
hecho

Ejecute el script.



$intentokey2.sh

Producción:

Ejemplo # 3:

Cree un archivo bash con el siguiente script que realizará diferentes tipos de tareas en función de la tecla presionada por el usuario. Si el usuario presiona '1', agregará dos argumentos de línea de comando e imprimirá. Si el usuario presiona '2', restará dos argumentos de línea de comando e imprimirá. La secuencia de comandos se ejecutará continuamente hasta que el usuario presione '3'.

#! / bin / bash
v1=$1
v2=$2
tiempo:
hacer
echo «1. Adición'
echo «2. Sustracción'
echo «3. Dejar'
echo -norte 'Tipo 1 o 2 o 3:'
leer -norte 1 -t 15a
printf ' orte'
caso $a en
1* ) echo '$ v1+$ v2=$ (($ v1 + $ v2))';;

2* ) echo '$ v1-$ v2=$ (($ v1- $ v2))';;

3* ) Salida 0;;


* ) echo 'Intentar otra vez.';;
esac
hecho

Ejecute el script con dos valores de argumentos numéricos.

$intentokey3.sh35 15

Producción:

Ejemplo # 4:

Cree un archivo bash con la siguiente secuencia de comandos. El script terminará cuando el usuario presione la tecla ESC. Este script imprimirá las teclas presionadas por el usuario hasta que se presione la tecla ESC.

#! / bin / bash
entrada del usuario=''
echo 'Presione la tecla ESC para salir'
# leer un solo carácter
tiempo leer -r -n1llave
hacer
# if entrada == tecla ESC
si [[ $ clave== $'Y' ]];
luego
rotura;
ser
# Agregue la clave a la variable que presiona el usuario.
entrada de usuario + =$ clave
hecho
printf ' orteHa escrito:$ userinput orte'

Ejecute el script.

$intentokey4.sh

Producción:

Ejemplo # 5:

Cree un archivo bash con el siguiente código que esperará a que la tecla ENTER termine el script. La secuencia de comandos tomará un nombre de servidor como entrada e intentará hacer ping al servidor cada 2 segundos. Si el comando ping obtiene la respuesta del servidor, terminará el script mostrando la salida; de lo contrario, esperará la respuesta del usuario o la tecla ENTER imprimiendo el mensaje, Intentando conectarse con….

#! / bin / bash
echo 'Ingrese la dirección del servidor al que desea hacer ping'
leerservidor
tiempo ! silbido -c 1 -norte -EN 2 $ servidor
hacer
echo 'Tratando de conectar con$ servidor'
echo 'Presione [ENTER] para terminar'
leer -s -NORTE 1 -t 1llave
si [[ $ clave== $' x0a' ]];# if input == tecla ENTER
luego
Salida 0
ser
hecho
printf '%s orte' '$ servidorEsta corriendo'

Ejecute el script.

$intentokey5.sh

Producción:

Conclusión:

Este tutorial muestra cómo puede escribir el script bash de varias formas que esperarán la entrada del usuario para realizar una tarea específica o terminar el script. Espero que, después de practicar los ejemplos anteriores, pueda escribir el script de tal manera que pueda esperar a que se presione cualquier tecla y realizar la tarea en particular según la tecla presionada por el usuario.