Bash așteptați apăsarea tastei

Bash Wait Keypress



Comanda „read” este utilizată pentru a prelua intrarea utilizatorului într-un script bash. Putem prelua intrarea în scriptul bash utilizând diferite tipuri de opțiuni cu comanda read. Uneori trebuie să scriem scriptul în așa fel încât scriptul să ruleze până când o anumită tastă este apăsată sau respectivul script se va executa pe baza tastei specifice sau programul va aștepta perioada specifică de timp până când este apăsată orice tastă. Modul în care puteți scrie script bash pentru a aștepta o anumită cheie sau orice cheie pentru anumite sarcini este prezentat în acest tutorial utilizând exemple diferite.

Exemplul nr. 1:

Creați un fișier bash cu următorul script. Când veți rula scriptul, acesta va continua până când utilizatorul apasă orice tastă. Scriptul va aștepta introducerea utilizatorului în fiecare 3 secunde și dacă utilizatorul nu apasă nici o tastă, atunci va imprima mesajul, așteptând apăsarea tastei .







#! / bin / bash
aruncat 'Apăsați orice tastă pentru a continua'
in timp ce [ Adevărat ];do
citit -t 3 -n 1
dacă [ $?=0 ];atunci
Ieșire;
altceva
aruncat „așteptând apăsarea tastei”
fi
Terminat

Rulați scriptul.



$bashcheie1.sh

Ieșire:







Exemplul 2:

Creați un fișier bash cu următorul script. În acest exemplu se folosește o buclă infinită de timp, care se va termina atunci când utilizatorul va apăsa „q”. Dacă utilizatorul apasă orice tastă fără „q”, atunci valoarea variabilei contorului va fi mărită cu 1 și va imprima valoarea.

#! / bin / bash
aruncat 'Apăsați' q 'pentru a ieși'
numara=0
in timp ce:;do
citit -n 1la<&1
dacă [[ $ k= q]];atunci
printf ' nRenunțarea la program n'
pauză
altceva
((numara=$ conta+1))
printf ' nIterează pentru$ contaori n'
aruncat 'Apăsați' q 'pentru a ieși'
fi
Terminat

Rulați scriptul.



$bashcheia2.sh

Ieșire:

Exemplul nr. 3:

Creați un fișier bash cu următorul script care va face diferite tipuri de sarcini pe baza tastei apăsate de utilizator. Dacă utilizatorul apasă „1”, atunci va adăuga două argumente de linie de comandă și va imprima. Dacă utilizatorul apasă „2”, atunci va scădea două argumente din linia de comandă și va imprima. Scriptul va rula continuu până când utilizatorul apasă „3”.

#! / bin / bash
v1=1 $
v2=2 USD
in timp ce:
do
aruncat „1. Plus'
aruncat „2. Scădere'
aruncat „3. Părăsi'
aruncat -n „Tipul 1 sau 2 sau 3:”
citit -n 1 -t cincisprezecela
printf ' n'
caz $ a în
1* ) aruncat '$ v1+$ v2=$ (($ v1 + $ v2)) ';;

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

3* ) Ieșire 0;;


* ) aruncat 'Încearcă din nou.';;
esac
Terminat

Rulați scriptul cu două valori de argument numerice.

$bashcheia3.sh35 cincisprezece

Ieșire:

Exemplul # 4:

Creați un fișier bash cu următorul script. Scriptul se va termina atunci când utilizatorul va apăsa tasta ESC. Acest script va imprima tastele apăsate de utilizator până când este apăsată tasta ESC.

#! / bin / bash
introducere utilizator=''
aruncat „Apăsați tasta ESC pentru a ieși”
# citește un singur caracter
in timp ce citit -r -n1cheie
do
# if input == tasta ESC
dacă [[ $ cheie== $'Și' ]];
atunci
pauză;
fi
# Adăugați tasta la variabila care este apăsată de utilizator.
userinput + =$ cheie
Terminat
printf ' nAți tastat:$ userinput n'

Rulați scriptul.

$bashcheia4.sh

Ieșire:

Exemplul # 5:

Creați un fișier bash cu următorul cod care va aștepta cheia ENTER pentru a termina scriptul. Scriptul va lua un nume de server ca intrare și va încerca să facă ping pe server în fiecare 2 secunde. Dacă comanda ping primește răspunsul de la server, atunci va termina scriptul afișând rezultatul, altfel va aștepta răspunsul utilizatorului sau tasta ENTER imprimând mesajul, Încercând să se conecteze cu ....

#! / bin / bash
aruncat „Introduceți adresa serverului pe care doriți să faceți ping”
cititServer
in timp ce ! ping -c 1 -n -ÎN 2 $ server
do
aruncat - Încerc să mă conectez$ server'
aruncat „Apăsați [ENTER] pentru a termina”
citit -s -N 1 -t 1cheie
dacă [[ $ cheie== $„ x0a” ]];# if input == tasta ENTER
atunci
Ieșire 0
fi
Terminat
printf '% s n' '$ serverrulează'

Rulați scriptul.

$bashcheie5.sh

Ieșire:

Concluzie:

Acest tutorial arată cum puteți scrie scriptul bash în diferite moduri care vor aștepta introducerea utilizatorului pentru a efectua orice sarcină specifică sau pentru a termina scriptul. Sper că, după practicarea exemplelor de mai sus, veți putea scrie scriptul în așa fel încât să puteți aștepta orice apăsare de tastă și să efectuați sarcina specială pe baza tastei apăsate de utilizator.