Bash oodake klahvivajutust

Bash Wait Keypress

käsku 'lugeda' kasutatakse kasutaja sisendi võtmiseks bash -skriptis. Me saame bash -skripti sisestada, kasutades lugemiskäsuga erinevaid valikuid. Mõnikord peame skripti kirjutama nii, et skript käivitub seni, kuni teatud klahvi vajutatakse või konkreetne skript konkreetse võtme alusel käivitatakse või programm ootab teatud aja, kuni vajutatakse mõnda klahvi. Selles juhendis on erinevaid näiteid kasutades näidatud, kuidas kirjutada bash -skript mõne konkreetse võtme või mõne ülesande võtme ootamiseks.

Näide#1:

Looge bash -fail järgmise skriptiga. Skripti käivitamisel jätkub see seni, kuni kasutaja vajutab suvalist klahvi. Skript ootab kasutaja sisendit iga 3 sekundi järel ja kui kasutaja ei vajuta ühtegi klahvi, prindib see sõnumi, ootab klahvivajutust .



#!/bin/bash
viskas välja 'Jätkamiseks vajutage suvalist klahvi'
samas [ tõsi ];teha
loe -t 3 -n 1
kui [ $?=0 ];siis
väljumine;
muidu
viskas välja 'ootan klahvivajutust'
olla
tehtud

Käivitage skript.



$löömakey1.sh

Väljund:



Näide#2:

Looge bash -fail järgmise skriptiga. Selles näites kasutatakse lõpmatut loopi, mis lõpeb, kui kasutaja vajutab nuppu „q”. Kui kasutaja vajutab mõnda klahvi ilma „q” -ta, suurendatakse loenduri muutuja väärtust 1 võrra ja prinditakse väärtus.

#!/bin/bash
viskas välja 'Väljumiseks vajutage' q '
loendama=0
samas:;teha
loe -n 1et<&1
kui [[ $ k= q]];siis
printf ' nProgrammist loobumine n'
murda
muidu
((loendama=$ loend+1))
printf ' nKorda$ loendkorda n'
viskas välja 'Väljumiseks vajutage' q '
olla
tehtud

Käivitage skript.



$löömakey2.sh

Väljund:

Näide#3:

Looge järgmise skriptiga bash -fail, mis teeb kasutaja klahvi alusel erinevaid ülesandeid. Kui kasutaja vajutab '1', lisab see kaks käsurea argumenti ja prindib. Kui kasutaja vajutab '2', lahutab see kaks käsurea argumenti ja prindib. Skript töötab pidevalt, kuni kasutaja vajutab nuppu 3.

#!/bin/bash
v1=$ 1
v2=2 dollarit
samas:
teha
viskas välja „1. Lisamine '
viskas välja „2. Lahutamine '
viskas välja „3. Lõpeta
viskas välja -n 'Tüüp 1 või 2 või 3:'
loe -n 1 -t viisteistet
printf ' n'
juhtum $ a sisse
1* ) viskas välja '$ v1+v2 dollarit=$ (($ v1+$ v2)) ';;

2* ) viskas välja '$ v1-v2 dollarit=$ (($ v1- $ v2)) ';;

3* ) väljumine 0;;


* ) viskas välja 'Proovi uuesti.';;
esac
tehtud

Käivitage skript kahe numbrilise argumendi väärtusega.

$löömakey3.sh35 viisteist

Väljund:

Näide#4:

Looge bash -fail järgmise skriptiga. Skript lõpeb, kui kasutaja vajutab klahvi ESC. See skript prindib kasutaja vajutatud klahve, kuni vajutatakse klahvi ESC.

#!/bin/bash
kasutaja sisend=''
viskas välja 'Väljumiseks vajutage ESC -klahvi'
# loe ühte tähemärki
samas loe -r -n1võti
teha
# kui sisend == ESC klahv
kui [[ $ võti== $' Ja' ]];
siis
murda;
olla
# Lisage võti muutujale, mida kasutaja vajutab.
kasutaja sisend+=$ võti
tehtud
printf ' nOlete sisestanud:$ userinput n'

Käivitage skript.

$löömakey4.sh

Väljund:

Näide#5:

Looge järgmise koodiga bash -fail, mis ootab skripti lõpetamiseks klahvi ENTER. Skript võtab sisendiks serveri nime ja proovib iga 2 sekundi järel serverit pingutada. Kui ping -käsk saab serverilt vastuse, lõpetab see skripti, näidates väljundit, vastasel juhul ootab see kasutaja vastust või sisestusklahvi, printides sõnumi, proovides ühendust luua….

#!/bin/bash
viskas välja 'Sisestage serveri aadress, mida soovite pingida'
loeserver
samas ! ping -c 1 -n -IN 2 $ server
teha
viskas välja 'Proovin ühendust luua$ server'
viskas välja 'Lõpetamiseks vajutage [ENTER]'
loe -s -N 1 -t 1võti
kui [[ $ võti== $' x0a' ]];# kui sisend == sisestusklahv
siis
väljumine 0
olla
tehtud
printf '%s n' '$ serverjookseb '

Käivitage skript.

$löömakey5.sh

Väljund:

Järeldus:

See õpetus näitab, kuidas saate bash -skripti mitmel viisil kirjutada, oodates, kuni kasutaja sisend teeb konkreetse ülesande või lõpetab skripti. Loodetavasti saate pärast ülaltoodud näidete harjutamist skripti kirjutada nii, et see võib oodata klahvivajutust ja teha konkreetne ülesanne kasutaja vajutatud klahvi põhjal.