Bash esperar pelo pressionamento de tecla

Bash Wait Keypress



O comando `read` é usado para receber a entrada do usuário em um script bash. Podemos receber entrada no script bash usando vários tipos de opções com o comando read. Às vezes, precisamos escrever o script de tal forma que o script será executado até que uma tecla específica seja pressionada ou o script específico será executado com base na tecla específica ou o programa irá aguardar o período de tempo específico até que qualquer tecla seja pressionada. Como você pode escrever um script bash para esperar por qualquer chave particular ou qualquer chave para algumas tarefas é mostrado neste tutorial usando diferentes exemplos.

Exemplo 1:

Crie um arquivo bash com o seguinte script. Quando você executar o script, ele continuará até que o usuário pressione qualquer tecla. O script aguardará a entrada do usuário a cada 3 segundos e se o usuário não pressionar nenhuma tecla, ele imprimirá a mensagem, esperando a tecla pressionada .







#! / bin / bash
jogou fora 'Pressione qualquer tecla para continuar'
enquanto [ verdade ];Faz
leitura -t 3 -n 1
E se [ $?=0 ];então
saída;
outro
jogou fora 'esperando o pressionamento de tecla'
ser
feito

Execute o script.



$bashkey1.sh

Saída:







Exemplo # 2:

Crie um arquivo bash com o seguinte script. Um loop while infinito é usado neste exemplo, que terminará quando o usuário pressionar 'q'. Se o usuário pressionar qualquer tecla sem 'q', o valor da variável do contador será aumentado em 1 e imprimirá o valor.

#! / bin / bash
jogou fora 'Pressione' q 'para sair'
contar=0
enquanto:;Faz
leitura -n 1para<&1
E se [[ $ k= q]];então
printf ' nSaindo do programa n'
pausa
outro
((contar=$ count+1))
printf ' nIterar para$ countvezes n'
jogou fora 'Pressione' q 'para sair'
ser
feito

Execute o script.



$bashkey2.sh

Saída:

Exemplo # 3:

Crie um arquivo bash com o seguinte script que fará diferentes tipos de tarefas com base na tecla pressionada pelo usuário. Se o usuário pressionar '1', ele adicionará dois argumentos de linha de comando e imprimirá. Se o usuário pressionar '2', ele subtrairá dois argumentos de linha de comando e imprimirá. O script será executado continuamente até que o usuário pressione '3'.

#! / bin / bash
v1=$ 1
v2=$ 2
enquanto:
Faz
jogou fora '1. Adição'
jogou fora '2. Subtração'
jogou fora '3. Desistir'
jogou fora -n 'Digite 1 ou 2 ou 3:'
leitura -n 1 -t quinzepara
printf ' n'
caso $ a no
1* ) jogou fora '$ v1+$ v2=$ (($ v1 + $ v2)) ';;

2* ) jogou fora '$ v1-$ v2=$ (($ v1- $ v2)) ';;

3* ) saída 0;;


* ) jogou fora 'Tente novamente.';;
esac
feito

Execute o script com dois valores de argumento numéricos.

$bashkey3.sh35 quinze

Saída:

Exemplo # 4:

Crie um arquivo bash com o seguinte script. O script será encerrado quando o usuário pressionar a tecla ESC. Este script imprimirá as teclas pressionadas pelo usuário até que a tecla ESC seja pressionada.

#! / bin / bash
entrada do usuário=''
jogou fora 'Pressione a tecla ESC para sair'
# leu um único caractere
enquanto leitura -r -n1chave
Faz
# if input == tecla ESC
E se [[ $ chave== $'E' ]];
então
pausa;
ser
# Adicione a tecla à variável pressionada pelo usuário.
userinput + =$ chave
feito
printf ' nVocê digitou:$ userinput n'

Execute o script.

$bashkey4.sh

Saída:

Exemplo # 5:

Crie um arquivo bash com o código a seguir que aguardará a tecla ENTER para encerrar o script. O script terá um nome de servidor como entrada e tentará fazer o ping do servidor a cada 2 segundos. Se o comando ping obtiver a resposta do servidor, ele encerrará o script exibindo a saída, caso contrário, ele aguardará a resposta do usuário ou a tecla ENTER imprimindo a mensagem, Tentando conectar com….

#! / bin / bash
jogou fora 'Digite o endereço do servidor que você deseja pingar'
leituraservidor
enquanto ! ping -c 1 -n -NO 2 $ server
Faz
jogou fora 'Tentando se conectar com$ server'
jogou fora 'Pressione [ENTER] para encerrar'
leitura -s -N 1 -t 1chave
E se [[ $ chave== $' x0a' ]];# if input == tecla ENTER
então
saída 0
ser
feito
printf '% s n' '$ serverestá correndo'

Execute o script.

$bashkey5.sh

Saída:

Conclusão:

Este tutorial mostra como você pode escrever o script bash de várias maneiras que irão esperar pela entrada do usuário para realizar qualquer tarefa específica ou encerrar o script. Espero que, depois de praticar os exemplos acima, você seja capaz de escrever o script de uma forma que possa esperar por qualquer pressionamento de tecla e realizar a tarefa específica com base na tecla pressionada pelo usuário.