Bash počakajte na pritisk tipke

Bash Wait Keypress



Ukaz 'read' se uporablja za vnos uporabniškega zapisa v bash skriptu. V bash skript lahko vnesemo z uporabo različnih vrst možnosti z ukazom read. Včasih moramo skript napisati tako, da se bo skript izvajal, dokler se ne pritisne določena tipka ali se bo določen skript izvajal na podlagi določenega ključa ali pa bo program čakal na določeno časovno obdobje, dokler ne pritisnemo katero koli tipko. Kako lahko napišete bash skript, da počaka na določen ključ ali ključ za nekatera opravila, je prikazano v tej vadnici z različnimi primeri.

Primer#1:

Ustvarite bash datoteko z naslednjim skriptom. Ko zaženete skript, se bo nadaljeval, dokler uporabnik ne pritisne katere koli tipke. Skript bo čakal na uporabnikov vnos vsake 3 sekunde in če uporabnik ne pritisne nobene tipke, bo natisnil sporočilo, čaka na pritisk tipke .







#!/bin/bash
vrgel ven 'Za nadaljevanje pritisnite katerikoli gumb'
medtem [ prav ];naredi
prebrati -t 3 -n 1
če [ $?=0 ];potem
izhod;
drugače
vrgel ven 'čaka na pritisk tipke'
biti
Končano

Zaženite skript.



$bashkey1.sh

Izhod:







Primer#2:

Ustvarite bash datoteko z naslednjim skriptom. V tem primeru je uporabljena neskončna zanka while, ki se konča, ko uporabnik pritisne 'q'. Če uporabnik pritisne katero koli tipko brez 'q', se vrednost številske spremenljivke poveča za 1 in vrednost natisne.

#!/bin/bash
vrgel ven 'Pritisnite' q 'za izhod'
šteti=0
medtem:;naredi
prebrati -n 1do<&1
če [[ $ k= q]];potem
printf ' nZapustitev programa n'
prekiniti
drugače
((šteti=$ count+1))
printf ' nPonovite za$ countkrat n'
vrgel ven 'Pritisnite' q 'za izhod'
biti
Končano

Zaženite skript.



$bashkey2.sh

Izhod:

Primer#3:

Ustvarite bash datoteko z naslednjim skriptom, ki bo opravljala različne vrste nalog na podlagi tipke, ki jo pritisne uporabnik. Če uporabnik pritisne »1«, bo dodal dva argumenta ukazne vrstice in natisnil. Če uporabnik pritisne »2«, bo odštel dva argumenta ukazne vrstice in natisnil. Skript bo deloval neprekinjeno, dokler uporabnik ne pritisne '3'.

#!/bin/bash
v1=1 USD
v2=2 USD
medtem:
naredi
vrgel ven '1. Dodatek '
vrgel ven '2. Odštevanje '
vrgel ven '3. Prenehati'
vrgel ven -n „Tip 1 ali 2 ali 3:“
prebrati -n 1 -t petnajstdo
printf ' n'
Ovitek $ a v
1* ) vrgel ven '$ v1+$ v2=$ (($ v1+$ v2)) ';;

2* ) vrgel ven '$ v1-$ v2=$ (($ v1- $ v2)) ';;

3* ) izhod 0;;


* ) vrgel ven 'Poskusi ponovno.';;
esac
Končano

Zaženite skript z dvema številskima vrednostma argumenta.

$bashkey3.sh35 petnajst

Izhod:

Primer#4:

Ustvarite bash datoteko z naslednjim skriptom. Skript se bo končal, ko bo uporabnik pritisnil tipko ESC. Ta skript bo natisnil tipke, ki jih pritisne uporabnik, dokler ne pritisne tipke ESC.

#!/bin/bash
uporabniški vnos=''
vrgel ven 'Pritisnite tipko ESC za izhod'
# preberi en sam znak
medtem prebrati -r -n1ključ
naredi
# če je vnos == tipka ESC
če [[ $ ključ== $' In' ]];
potem
prekiniti;
biti
# Dodajte ključ spremenljivki, ki jo pritisne uporabnik.
uporabniški vnos+=$ ključ
Končano
printf ' nVpisali ste:$ userinput n'

Zaženite skript.

$bashkey4.sh

Izhod:

Primer#5:

Ustvarite bash datoteko z naslednjo kodo, ki bo počakala, da tipka ENTER zaključi skript. Skript bo kot vhod vzel ime strežnika in bo poskušal ping strežnika vsake 2 sekundi. Če ukaz ping prejme odgovor od strežnika, bo skript zaključil s prikazom izpisa, sicer bo počakal na odziv uporabnika ali tipko ENTER tako, da bo natisnil sporočilo, poskuša vzpostaviti povezavo z….

#!/bin/bash
vrgel ven 'Vnesite naslov strežnika, ki ga želite pingati'
prebratistrežnika
medtem ! ping -c 1 -n -IN 2 $ strežnik
naredi
vrgel ven 'Poskušam se povezati z$ strežnik'
vrgel ven 'Pritisnite [ENTER] za prekinitev'
prebrati -s -N 1 -t 1ključ
če [[ $ ključ== $' x0a' ]];# če je vnos == tipka ENTER
potem
izhod 0
biti
Končano
printf '%s n' '$ strežnikteče'

Zaženite skript.

$bashkey5.sh

Izhod:

Zaključek:

Ta vadnica prikazuje, kako lahko na različne načine napišete bash skript, ki bo počakal, da uporabnikov vnos opravi katero koli posebno nalogo ali zaključi skript. Upam, da boste po vadbi zgornjih primerov lahko napisali skript tako, da lahko počaka na pritisk tipke in opravi določeno nalogo na podlagi tipke, ki jo pritisne uporabnik.