Bash maghintay para sa keypress

Bash Wait Keypress



Ginagamit ang command na `read` upang kumuha ng input ng gumagamit sa isang bash script. Maaari kaming kumuha ng input sa bash script sa pamamagitan ng paggamit ng iba't ibang mga uri ng mga pagpipilian sa binasang utos. Minsan kailangan naming isulat ang script sa isang paraan na tatakbo ang script hanggang sa mapindot ang isang tukoy na susi o ang partikular na script ay papatay batay sa tukoy na susi o maghihintay ang programa para sa tiyak na dami ng oras hanggang sa mapindot ang anumang key. Paano mo masusulat ang bash script upang maghintay para sa anumang partikular na key o anumang susi sa ilang mga gawain ay ipinapakita sa tutorial na ito sa pamamagitan ng paggamit ng iba't ibang mga halimbawa.

Halimbawa # 1:

Lumikha ng isang bash file gamit ang sumusunod na script. Kung tatakbo mo ang script, magpapatuloy ito hanggang sa mapindot ng gumagamit ang anumang key. Maghihintay ang script para sa pag-input ng gumagamit sa bawat 3 segundo at kung hindi pinindot ng gumagamit ang anumang key pagkatapos ay mai-print nito ang mensahe, naghihintay para sa keypress .







#! / baseng / bash
itinapon 'Pindutin ang anumang key upang magpatuloy'
habang [ totoo ];gawin
basahin -t 3 -n 1
kung [ $?=0 ];tapos
labasan;
iba pa
itinapon 'naghihintay para sa keypress'
maging
tapos na

Patakbuhin ang iskrip.



$bashkey1.sh

Output:







Halimbawa # 2:

Lumikha ng isang bash file gamit ang sumusunod na script. Ang isang walang hanggan habang loop ay ginagamit sa halimbawang ito na magtatapos kapag pipindutin ng 'q' ang gumagamit. Kung pinindot ng gumagamit ang anumang key nang walang 'q' pagkatapos ang halaga ng counter variable ay tataas ng 1 at mai-print ang halaga.

#! / baseng / bash
itinapon 'Pindutin ang' q 'upang lumabas'
bilangin=0
habang:;gawin
basahin -n 1sa<&1
kung [[ $ k= q]];tapos
printf ' nPagtatapos sa programa n'
pahinga
iba pa
((bilangin=$ count+1))
printf ' nIterate para sa$ countmga oras n'
itinapon 'Pindutin ang' q 'upang lumabas'
maging
tapos na

Patakbuhin ang iskrip.



$bashkey2.sh

Output:

Halimbawa # 3:

Lumikha ng isang bash file gamit ang sumusunod na script na gagawa ng iba't ibang mga uri ng mga gawain batay sa key na pinindot ng gumagamit. Kung pinindot ng gumagamit ang '1' pagkatapos ay magdaragdag ito ng dalawang mga argumento ng linya ng utos at i-print. Kung pinindot ng gumagamit ang '2' pagkatapos ay ibabawas nito ang dalawang mga argumento ng linya ng utos at i-print. Patuloy na tatakbo ang script hanggang sa pindutin ng gumagamit ang '3'.

#! / baseng / bash
v1=$ 1
v2=$ 2
habang:
gawin
itinapon '1. Karagdagan '
itinapon '2. Pagbabawas '
itinapon '3. Umalis na '
itinapon -n 'Type 1 o 2 o 3:'
basahin -n 1 -t labinlimangsa
printf ' n'
kaso $ a sa
1* ) itinapon '$ v1+$ v2=$ (($ v1 + $ v2)) ';;

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

3* ) labasan 0;;


* ) itinapon 'Subukang muli.';;
esac
tapos na

Patakbuhin ang script na may dalawang mga halagang halagang pang-argumento.

$bashkey3.sh35 labinlimang

Output:

Halimbawa # 4:

Lumikha ng isang bash file gamit ang sumusunod na script. Tatapusin ang script kapag pipindutin ng gumagamit ang ESC key. Ipi-print ng script na ito ang mga key na pinindot ng gumagamit hanggang sa mapindot ang ESC key.

#! / baseng / bash
userinput='
itinapon 'Pindutin ang ESC key upang umalis'
# basahin ang isang solong character
habang basahin -r -n1susi
gawin
# kung input == ESC key
kung [[ $ key== $' At' ]];
tapos
pahinga;
maging
# Idagdag ang susi sa variable na pinindot ng gumagamit.
userinput + =$ key
tapos na
printf ' nNag-type ka:$ userinput n'

Patakbuhin ang iskrip.

$bashkey4.sh

Output:

Halimbawa # 5:

Lumikha ng isang bash file na may sumusunod na code na maghihintay para sa ENTER key upang wakasan ang script. Ang script ay kukuha ng isang pangalan ng server bilang input at susubukan na i-ping ang server sa bawat 2 segundo. Kung nakakuha ang tugon ng ping ng tugon mula sa server pagkatapos ay tatapusin nito ang script sa pamamagitan ng pagpapakita ng output kung hindi man maghihintay ito sa tugon ng gumagamit o ENTER key sa pamamagitan ng pag-print ng mensahe, Sinusubukang kumonekta sa….

#! / baseng / bash
itinapon 'Ipasok ang server address na nais mong i-ping'
basahinserver
habang ! ping -c 1 -n -SA 2 $ server
gawin
itinapon 'Sinusubukang kumonekta$ server'
itinapon 'Pindutin ang [ENTER] upang wakasan'
basahin -s -N 1 -t 1susi
kung [[ $ key== $' x0a' ]];# kung input == ENTER key
tapos
labasan 0
maging
tapos na
printf '% s n' '$ serveray tumatakbo'

Patakbuhin ang iskrip.

$bashkey5.sh

Output:

Konklusyon:

Ipinapakita ng tutorial na ito kung paano mo maaaring isulat ang bash script sa iba't ibang mga paraan na maghihintay para sa input ng gumagamit na gumawa ng anumang tukoy na gawain o wakasan ang script. Sana, pagkatapos ng pagsasanay ng mga halimbawa sa itaas, magagawa mong isulat ang script sa paraang makapaghintay para sa anumang keypress at gawin ang partikular na gawain batay sa key na pinindot ng gumagamit.