Bash vent på keypress

Bash vent på keypress
'Read' -kommandoen brukes til å ta brukerinngang i et bash -skript. Vi kan ta innspill i Bash -skriptet ved å bruke forskjellige typer alternativer med Les -kommandoen. Noen ganger må vi skrive skriptet på en slik måte at skriptet kjøres til en spesifikk nøkkel er trykket på, eller det aktuelle skriptet blir kjørt basert på den spesifikke tasten eller programmet vil vente på den spesifikke tiden til en hvilken som helst tast presses. Hvordan du kan skrive Bash -skript for å vente på en bestemt nøkkel eller noen nøkkel til noen oppgaver vises i denne opplæringen ved å bruke forskjellige eksempler.

Eksempel nr. 1:

Lag en bash -fil med følgende skript. Når du kjører skriptet, vil det fortsette til brukeren trykker på en hvilken som helst nøkkel. Skriptet vil vente på brukerens innspill i hvert tredje sekund, og hvis brukeren ikke trykker på noen tast, vil den skrive ut meldingen, "venter på tastetrykket“.

#!/bin/bash
ekko "Trykk på enhver tast for å fortsette"
mens [sant]; gjøre
Les -T 3 -n 1
Hvis [$? = 0]; deretter
exit ;
ellers
ekko "Venter på tastetrykket"
fi
Ferdig

Kjør manuset.

$ bash key1.sh

Produksjon:

Eksempel 2:

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

#!/bin/bash
ekko "Trykk 'Q' for å avslutte"
telling = 0
samtidig som : ; gjøre
Les -n 1 K <&1
hvis [[$ k = q]]; deretter
printf "\ nquitting fra programmet \ n"
gå i stykker
ellers
(teller = $ count+1))
printf "\ niterate for $ count Times \ n"
ekko "Trykk 'Q' for å avslutte"
fi
Ferdig

Kjør manuset.

$ Bash Key2.sh

Produksjon:

Eksempel nr. 3:

Lag en bash -fil med følgende skript som vil gjøre forskjellige typer oppgaver basert på nøkkelen som er presset av brukeren. Hvis brukeren trykker på '1', vil den legge til to kommandolinjeargumenter og skrive ut. Hvis brukeren trykker på '2', vil den trekke fra to kommandolinjeargumenter og skrive ut. Skriptet kjøres kontinuerlig til brukeren trykker på '3'.

#!/bin/bash
V1 = $ 1
V2 = $ 2
samtidig som :
gjøre
ekko "1. Addisjon"
ekko "2. Subtraksjon"
ekko "3. Slutte"
Echo -n "Type 1 eller 2 eller 3:"
Les -n 1 -t 15 a
printf "\ n"
sak $ a i
1*) ekko "$ v1 + $ v2 = $ (($ v1 + $ v2))" ;;
2*) ekko "$ v1 - $ v2 = $ (($ v1- $ v2))" ;;
3*) Avslutt 0 ;;
*) ekko "Prøv igjen.";;
Esac
Ferdig

Kjør skriptet med to numeriske argumentverdier.

$ bash Key3.SH 35 15

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 er presset av brukeren til ESC -tasten er trykket på.

#!/bin/bash
userInput = ""
Ekko "Trykk på ESC -nøkkel for å slutte"
# Les en enkelt karakter
mens du les -r -n1 -tasten
gjøre
# Hvis input == ESC -tast
hvis [[$ key == $ '\ e']];
deretter
gå i stykker;
fi
# Legg til nøkkelen til variabelen som er trykket av brukeren.
userInput+= $ nøkkel
Ferdig
printf "\ nyou har skrevet: $ userInput \ n"

Kjør manuset.

$ Bash Key4.sh

Produksjon:

Eksempel 5:

Lag en bash -fil med følgende kode som vil vente på at Enter -tasten skal avslutte skriptet. Skriptet vil ta et servernavn som input og vil prøve å pinge serveren i hvert 2. sekund. Hvis Ping -kommandoen får svaret fra serveren, vil den avslutte skriptet ved å vise utdataene ellers vil den vente på brukerens svar eller gå inn i tasten ved å skrive ut meldingen, "Prøver å koble til ...".

#!/bin/bash
ekko "Skriv inn serveradressen du vil pinge"
Les server
samtidig som ! ping -c 1 -n -w 2 $ server
gjøre
ekko "Prøver å koble til $ server"
ekko "Trykk på [Enter] for å avslutte"
Les -S -n 1 -t 1 -tast
hvis [[$ key == $ '\ x0a']]; # Hvis input == Angi tasten
deretter
Avslutt 0
fi
Ferdig
printf "%s \ n" "$ server kjører"

Kjør manuset.

$ BASH KEY5.sh

Produksjon:

Konklusjon:

Denne opplæringen viser hvordan du kan skrive Bash -skriptet på forskjellige måter som vil vente på at brukerens innspill skal gjøre noen spesifikk oppgave eller avslutte skriptet. Håper, etter å ha praktisert eksemplene ovenfor, vil du kunne skrive skriptet på en slik måte som kan vente på ethvert tastetrykk og gjøre den aktuelle oppgaven basert på nøkkelen som er presset av brukeren.