Bare vent på tastetrykk

Bash Wait Keypress



kommandoen 'les' brukes til å ta brukerinndata i et bash -skript. Vi kan ta innspill i bash script ved å bruke forskjellige typer alternativer med read -kommandoen. Noen ganger må vi skrive skriptet på en slik måte at skriptet vil kjøre til en bestemt tast trykkes eller det bestemte skriptet vil bli utført basert på den spesifikke tasten, eller programmet vil vente på den spesifikke tiden til en tast trykkes. Hvordan du kan skrive bash -skript for å vente på en bestemt nøkkel eller en nøkkel til noen oppgaver, vises i denne opplæringen ved å bruke forskjellige eksempler.

Eksempel#1:

Lag en bash -fil med følgende skript. Når du vil kjøre skriptet, fortsetter det til brukeren trykker på en tast. Skriptet vil vente på brukerens innspill hvert tredje sekund, og hvis brukeren ikke trykker på en tast, skrives meldingen ut, venter på tastetrykket .







#!/bin/bash
kastet ut 'Press hvilken som helst tast for å fortsette'
samtidig som [ ekte ];gjøre
lese -t 3 -n 1
hvis [ $?=0 ];deretter
exit;
ellers
kastet ut 'venter på tastetrykket'
være
gjort

Kjør skriptet.



$bashkey1.sh

Produksjon:







Eksempel 2:

Lag en bash -fil med følgende skript. En uendelig mens loop brukes i dette eksemplet som avsluttes når brukeren trykker på 'q'. Hvis brukeren trykker på en tast uten 'q', vil verdien av tellervariabelen økes med 1 og skrive ut verdien.

#!/bin/bash
kastet ut 'Trykk' q 'for å gå ut'
telle=0
samtidig som:;gjøre
lese -n 1til<&1
hvis [[ $ k= q]];deretter
printf ' nSlutter fra programmet n'
gå i stykker
ellers
((telle=$ telle+1))
printf ' nIterate for$ telleganger n'
kastet ut 'Trykk' q 'for å gå ut'
være
gjort

Kjør skriptet.



$bashkey2.sh

Produksjon:

Eksempel 3:

Lag en bash -fil med følgende skript som vil utføre forskjellige typer oppgaver basert på tasten som trykkes av brukeren. Hvis brukeren trykker på ‘1’, vil den legge til to kommandolinjeargumenter og skrive ut. Hvis brukeren trykker på '2', trekker den fra to kommandolinjeargumenter og skriver ut. Skriptet vil kjøre kontinuerlig til brukeren trykker på ‘3’.

#!/bin/bash
v1=$ 1
v2=$ 2
samtidig som:
gjøre
kastet ut '1. Addisjon'
kastet ut '2. Subtraksjon'
kastet ut '3. Slutte'
kastet ut -n 'Type 1 eller 2 eller 3:'
lese -n 1 -t femtentil
printf ' n'
sak $ a i
1* ) kastet ut '$ v1+$ v2=$ (($ v1+$ v2)) ';;

2* ) kastet ut '$ v1-$ v2=$ (($ v1- $ v2)) ';;

3* ) exit 0;;


* ) kastet ut 'Prøv igjen.';;
esac
gjort

Kjør skriptet med to numeriske argumentverdier.

$bashkey3.sh35 femten

Produksjon:

Eksempel#4:

Lag en bash -fil med følgende skript. Skriptet avsluttes når brukeren trykker på ESC -tasten. Dette skriptet vil skrive ut tastene som trykkes av brukeren til ESC -tasten trykkes.

#!/bin/bash
brukerinngang=''
kastet ut 'Trykk ESC -tasten for å avslutte'
# les et enkelt tegn
samtidig som lese -r -n1nøkkel
gjøre
# hvis input == ESC -nøkkel
hvis [[ $ nøkkel== $'Og' ]];
deretter
gå i stykker;
være
# Legg til nøkkelen til variabelen som trykkes av brukeren.
userinput+=$ nøkkel
gjort
printf ' nDu har skrevet:$ brukerinngang n'

Kjør skriptet.

$bashkey4.sh

Produksjon:

Eksempel#5:

Lag en bash -fil med følgende kode som venter på ENTER -tasten for å avslutte skriptet. Skriptet tar et servernavn som input og prøver å pinge serveren hvert 2. sekund. Hvis ping -kommandoen får svaret fra serveren, vil den avslutte skriptet ved å vise utdataene, ellers venter det på brukerens svar eller ENTER -tasten ved å skrive ut meldingen, prøver å koble til….

#!/bin/bash
kastet ut 'Skriv inn serveradressen du vil pinge'
leseserver
samtidig som ! ping -c 1 -n -I 2 $ server
gjøre
kastet ut 'Prøver å koble til$ server'
kastet ut 'Trykk [ENTER] for å avslutte'
lese -s -N 1 -t 1nøkkel
hvis [[ $ nøkkel== $' x0a' ]];# hvis input == ENTER -tasten
deretter
exit 0
være
gjort
printf '%s n' '$ serverløper'

Kjør skriptet.

$bashkey5.sh

Produksjon:

Konklusjon:

Denne opplæringen viser hvordan du kan skrive bash -skriptet på forskjellige måter som venter på at brukerens innspill skal utføre en bestemt oppgave eller avslutte skriptet. Håper, etter å ha øvd på eksemplene ovenfor, vil du kunne skrive manuset på en slik måte at du kan vente på et tastetrykk og utføre den bestemte oppgaven basert på tasten som trykkes av brukeren.