Bash laukti klavišo paspaudimo

Bash Wait Keypress



komanda „skaityti“ naudojama norint įvesti vartotoją į „bash“ scenarijų. Mes galime įvesti bash scenarijų, naudodami įvairias parinktis su skaitymo komanda. Kartais mums reikia rašyti scenarijų taip, kad scenarijus veiktų tol, kol bus paspaustas konkretus klavišas arba konkretus scenarijus bus vykdomas pagal konkretų raktą arba programa lauks tam tikro laiko, kol paspaus bet kurį klavišą. Kaip galite parašyti „bash“ scenarijų, kad palauktumėte bet kurio konkretaus rakto ar bet kurio rakto tam tikroms užduotims, parodytas šiame vadove, naudojant skirtingus pavyzdžius.

1 pavyzdys:

Sukurkite „bash“ failą naudodami šį scenarijų. Kai paleisite scenarijų, jis tęsis tol, kol vartotojas paspaus bet kurį klavišą. Scenarijus lauks vartotojo įvesties kas 3 sekundes, o jei vartotojas nepaspaus jokio klavišo, jis išspausdins pranešimą, laukiant klavišo paspaudimo .







#!/bin/bash
išmetė 'Paspauskite bet kurį klavišą norėdami tęsti'
tuo tarpu [ tiesa ];daryti
skaityti -t 3 -n 1
jei [ $?=0 ];tada
išeiti;
Kitas
išmetė 'laukiu klavišo paspaudimo'
būti
padaryta

Paleiskite scenarijų.



$muštiraktas1.sh

Išėjimas:







2 pavyzdys:

Sukurkite „bash“ failą naudodami šį scenarijų. Šiame pavyzdyje naudojama begalinė ciklas, kuris baigsis, kai vartotojas paspaus „q“. Jei vartotojas paspaudžia bet kurį klavišą be „q“, skaitiklio kintamojo vertė padidinama 1 ir atspausdinama.

#!/bin/bash
išmetė „Norėdami išeiti, paspauskite„ q “
skaičiuoti=0
tuo tarpu:;daryti
skaityti -n 1į<&1
jei [[ $ k= q]];tada
printf ' nIšeiti iš programos n'
pertrauka
Kitas
((skaičiuoti=$ skaičių+1))
printf ' nPakartokite$ skaičiųlaikai n'
išmetė „Norėdami išeiti, paspauskite„ q “
būti
padaryta

Paleiskite scenarijų.



$muštikey2.sh

Išėjimas:

3 pavyzdys:

Sukurkite „bash“ failą naudodami šį scenarijų, kuris atliks įvairių tipų užduotis pagal vartotojo paspaustą klavišą. Jei vartotojas paspaus „1“, jis pridės du komandinės eilutės argumentus ir spausdins. Jei vartotojas paspaus „2“, jis atims du komandinės eilutės argumentus ir spausdins. Scenarijus veiks nuolat, kol vartotojas paspaus „3“.

#!/bin/bash
v1=1 USD
v2=2 USD
tuo tarpu:
daryti
išmetė „1. Papildymas “
išmetė „2. Atimtis “
išmetė „3. Išeiti '
išmetė -n „1 arba 2 arba 3 tipas:“
skaityti -n 1 -t penkiolikaį
printf ' n'
atvejis $ a į
1* ) išmetė '$ v1+$ 2=$ (($ 1+$ 2)) ';;

2* ) išmetė '$ v1-$ 2=$ (($ 1–2 USD)) ';;

3* ) išeiti 0;;


* ) išmetė 'Bandyk iš naujo.';;
esac
padaryta

Paleiskite scenarijų naudodami dvi skaitmenines argumentų reikšmes.

$muštikey3.sh35 penkiolika

Išėjimas:

4 pavyzdys:

Sukurkite „bash“ failą naudodami šį scenarijų. Scenarijus bus nutrauktas, kai vartotojas paspaus ESC klavišą. Šis scenarijus spausdins vartotojo paspaustus klavišus, kol bus paspaustas ESC klavišas.

#!/bin/bash
vartotojo įvestis=''
išmetė „Norėdami išeiti, paspauskite ESC klavišą“
# perskaitykite vieną simbolį
tuo tarpu skaityti -r -n1Raktas
daryti
# jei įvestis == ESC klavišas
jei [[ $ raktas== $' Ir' ]];
tada
pertrauka;
būti
# Pridėkite raktą prie kintamojo, kurį spaudžia vartotojas.
vartotojo įvestis+=$ raktas
padaryta
printf ' nJūs įvedėte:$ userinput n'

Paleiskite scenarijų.

$muštiraktas4.sh

Išėjimas:

5 pavyzdys:

Sukurkite „bash“ failą su šiuo kodu, kuris lauks, kol „ENTER“ raktas užbaigs scenarijų. Scenarijus įves serverio pavadinimą ir kas 2 sekundes bandys pinga serverį. Jei „ping“ komanda gauna atsakymą iš serverio, ji nutraukia scenarijų, rodydama išvestį, kitaip ji lauks vartotojo atsakymo arba klavišo ENTER spausdindama pranešimą, bando prisijungti prie….

#!/bin/bash
išmetė „Įveskite serverio adresą, kurį norite pinga“
skaitytiserveris
tuo tarpu ! ping -c 1 -n -IN 2 $ serveris
daryti
išmetė 'Bandau susisiekti$ serveris'
išmetė 'Norėdami baigti, paspauskite [ENTER]
skaityti -s -N 1 -t 1Raktas
jei [[ $ raktas== $„ x0a“ ]];# jei įvestis == ENTER klavišas
tada
išeiti 0
būti
padaryta
printf '%s n' '$ serverisbėga'

Paleiskite scenarijų.

$muštiraktas5.sh

Išėjimas:

Išvada:

Ši pamoka parodo, kaip galite rašyti „bash“ scenarijų įvairiais būdais, kurie lauks, kol vartotojo įvestis atliks kokią nors konkrečią užduotį arba nutrauks scenarijų. Tikimės, kad išbandę aukščiau pateiktus pavyzdžius, galėsite parašyti scenarijų taip, kad galėtumėte palaukti bet kurio klavišo paspaudimo ir atlikti konkrečią užduotį pagal vartotojo paspaustą klavišą.