Bash: espereu la pressió

Bash Wait Keypress



L'ordre 'read' s'utilitza per obtenir l'entrada de l'usuari en un script bash. Podem introduir entrades en script bash utilitzant diversos tipus d’opcions amb l’ordre read. De vegades, hem d’escriure l’escriptura de manera que l’escriptura s’executi fins que es prem una tecla específica o s’executarà l’escript en funció de la tecla específica o el programa esperarà el temps específic fins que es prem qualsevol tecla. En aquest tutorial es mostra com es pot escriure un script bash per esperar alguna clau en particular o alguna tecla d'algunes tasques mitjançant diferents exemples.

Exemple 1:

Creeu un fitxer bash amb el següent script. Quan executeu l'script, continuarà fins que l'usuari prem qualsevol tecla. El script esperarà l'entrada de l'usuari cada 3 segons i, si l'usuari no prem cap tecla, imprimirà el missatge, esperant la pulsació de tecla .







#! / bin / bash
trobo 'Premeu qualsevol tecla per continuar'
mentre [ cert ];fer
llegir -t 3 -n 1
si [ $?=0 ];llavors
sortir;
en cas contrari
trobo 'esperant la pressió'
ser
fet

Executeu l'script.



$bashkey1.sh

Sortida:







Exemple 2:

Creeu un fitxer bash amb el següent script. En aquest exemple s’utilitza un bucle while infinit que finalitzarà quan l’usuari premgi 'q'. Si l'usuari prem qualsevol tecla sense 'q', el valor de la variable de comptador s'incrementarà 1 i s'imprimirà el valor.

#! / bin / bash
trobo 'Premeu' q 'per sortir'
comptar=0
mentre:;fer
llegir -n 1a<&1
si [[ $ k= q]];llavors
printf ' nSurt del programa n'
trencar
en cas contrari
((comptar=$ recompte+1))
printf ' nIterar per$ recomptevegades n'
trobo 'Premeu' q 'per sortir'
ser
fet

Executeu l'script.



$bashkey2.sh

Sortida:

Exemple 3:

Creeu un fitxer bash amb el següent script que farà diferents tipus de tasques en funció de la tecla premuda per l'usuari. Si l'usuari prem '1', afegirà dos arguments de línia d'ordres i imprimirà. Si l'usuari prem '2', restarà dos arguments de la línia d'ordres i imprimirà. El guió s’executarà contínuament fins que l’usuari premgui '3'.

#! / bin / bash
v1=$ 1
v2=$ 2
mentre:
fer
trobo «1. Addició '
trobo '2. Resta '
trobo «3. Deixa
trobo -n 'Tipus 1 o 2 o 3:'
llegir -n 1 -t 15a
printf ' n'
Caixa $ a dins
1* ) trobo '$ v1+$ v2=$ (($ v1 + $ v2)) ';;

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

3* ) sortir 0;;


* ) trobo 'Torna-ho a provar'.;;
esac
fet

Executeu l'script amb dos valors d'argument numèric.

$bashkey3.sh35 15

Sortida:

Exemple # 4:

Creeu un fitxer bash amb el següent script. El script finalitzarà quan l'usuari premgi la tecla ESC. Aquest script imprimirà les tecles premudes per l'usuari fins que es prem la tecla ESC.

#! / bin / bash
entrada d’usuari=''
trobo 'Premeu la tecla ESC per sortir'
# llegir un sol caràcter
mentre llegir -r -n1clau
fer
# if input == clau ESC
si [[ $ clau== $' I' ]];
llavors
trencar;
ser
# Afegiu la tecla a la variable que prem l'usuari.
entrada d’usuari + =$ clau
fet
printf ' nHeu escrit:$ entrada d'usuari n'

Executeu l'script.

$bashkey4.sh

Sortida:

Exemple 5:

Creeu un fitxer bash amb el codi següent que esperarà a que la tecla ENTER finalitzi l'script. L'script agafarà un nom de servidor com a entrada i intentarà fer ping al servidor cada 2 segons. Si l'ordre ping obté la resposta del servidor, acabarà l'script mostrant la sortida, en cas contrari, esperarà la resposta de l'usuari o la tecla ENTER imprimint el missatge, intentant connectar-se amb ....

#! / bin / bash
trobo 'Introduïu l'adreça del servidor que voleu fer ping'
llegirservidor
mentre ! ping -c 1 -n -EN 2 $ servidor
fer
trobo 'Intentant connectar amb$ servidor'
trobo 'Premeu [ENTER] per finalitzar'
llegir -s -N 1 -t 1clau
si [[ $ clau== $' x0a' ]];# if input == tecla ENTER
llavors
sortir 0
ser
fet
printf '% s n' '$ servidorestà corrent'

Executeu l'script.

$bashkey5.sh

Sortida:

Conclusió:

Aquest tutorial mostra com podeu escriure l'script bash de diverses maneres que esperaran a l'entrada de l'usuari per fer qualsevol tasca específica o finalitzar l'script. Espero que, després de practicar els exemples anteriors, pugueu escriure l'script de manera que pugueu esperar a prémer qualsevol tecla i fer la tasca en funció de la tecla que prem l'usuari.