Bash vent på tastetryk

Bash Wait Keypress



kommandoen 'læs' bruges til at tage brugerinput i et bash -script. Vi kan tage input i bash script ved at bruge forskellige typer muligheder med kommandoen read. Nogle gange er vi nødt til at skrive scriptet på en sådan måde, at scriptet kører, indtil der trykkes på en bestemt tast, eller det pågældende script udføres baseret på den specifikke tast, eller programmet venter i den bestemte tid, indtil der trykkes på en tast. Hvordan du kan skrive bash script for at vente på en bestemt nøgle eller en nøgle til nogle opgaver, vises i denne vejledning ved hjælp af forskellige eksempler.

Eksempel#1:

Opret en bash -fil med følgende script. Når du vil køre scriptet, fortsætter det, indtil brugeren trykker på en vilkårlig tast. Scriptet venter på brugerens input hvert 3. sekund, og hvis brugeren ikke trykker på en tast, udskriver det meddelelsen, venter på tastetrykket .







#!/bin/bash
smed ud 'Tryk på en vilkårlig tast for at fortsætte'
mens [ sand ];gøre
Læs -t 3 -n 1
hvis [ $?=0 ];derefter
Afslut;
andet
smed ud 'venter på tastetrykket'
være
Færdig

Kør scriptet.



$bashkey1.sh

Produktion:







Eksempel#2:

Opret en bash -fil med følgende script. Der bruges en uendelig while loop i dette eksempel, der slutter, når brugeren trykker på 'q'. Hvis brugeren trykker på en vilkårlig tast uden ‘q’, øges værdien af ​​tællervariablen med 1 og udskriver værdien.

#!/bin/bash
smed ud 'Tryk på' q 'for at afslutte'
tælle=0
mens:;gøre
Læs -n 1til<&1
hvis [[ $ k= q]];derefter
printf ' nAfslutter programmet n'
pause
andet
((tælle=$ tæller+1))
printf ' nIterere for$ tællergange n'
smed ud 'Tryk på' q 'for at afslutte'
være
Færdig

Kør scriptet.



$bashkey2.sh

Produktion:

Eksempel#3:

Opret en bash -fil med følgende script, der udfører forskellige typer opgaver baseret på den tast, der trykkes af brugeren. Hvis brugeren trykker på '1', tilføjer den to kommandolinjeargumenter og udskriver. Hvis brugeren trykker på '2', fratrækker den to kommandolinjeargumenter og udskriver. Scriptet kører kontinuerligt, indtil brugeren trykker på '3'.

#!/bin/bash
v1=$ 1
v2=$ 2
mens:
gøre
smed ud '1. Tilføjelse '
smed ud '2. Subtraktion'
smed ud '3. Afslut'
smed ud -n 'Type 1 eller 2 eller 3:'
Læs -n 1 -t femtentil
printf ' n'
sag $ a i
1* ) smed ud '$ v1+$ v2=$ (($ v1+$ v2)) ';;

2* ) smed ud '$ v1-$ v2=$ (($ v1- $ v2)) ';;

3* ) Afslut 0;;


* ) smed ud 'Prøv igen.';;
esac
Færdig

Kør scriptet med to numeriske argumentværdier.

$bashkey3.sh35 femten

Produktion:

Eksempel#4:

Opret en bash -fil med følgende script. Scriptet afsluttes, når brugeren trykker på ESC -tasten. Dette script udskriver de taster, der trykkes af brugeren, indtil der trykkes på ESC -tasten.

#!/bin/bash
brugerindgang=''
smed ud 'Tryk på ESC -tasten for at afslutte'
# læs et enkelt tegn
mens Læs -r -n1nøgle
gøre
# hvis input == ESC -tast
hvis [[ $ nøgle== $'Og' ]];
derefter
pause;
være
# Tilføj nøglen til variablen, som brugeren trykker på.
userinput+=$ nøgle
Færdig
printf ' nDu har skrevet:$ brugerindgang n'

Kør scriptet.

$bashkey4.sh

Produktion:

Eksempel#5:

Opret en bash -fil med følgende kode, der venter på, at ENTER -tasten afslutter scriptet. Scriptet tager et servernavn som input og forsøger at pinge serveren hvert 2. sekund. Hvis ping -kommandoen får svaret fra serveren, vil det afslutte scriptet ved at vise outputtet, ellers venter det på brugerens svar eller ENTER -tasten ved at udskrive meddelelsen, prøver at oprette forbindelse til ....

#!/bin/bash
smed ud 'Indtast den serveradresse, du vil pinge'
Læsserver
mens ! ping -c 1 -n -I 2 $ server
gøre
smed ud 'Forsøger at oprette forbindelse til$ server'
smed ud 'Tryk på [ENTER] for at afslutte'
Læs -s -N 1 -t 1nøgle
hvis [[ $ nøgle== $' x0a' ]];# hvis input == ENTER -tast
derefter
Afslut 0
være
Færdig
printf '%s n' '$ serverløber'

Kør scriptet.

$bashkey5.sh

Produktion:

Konklusion:

Denne vejledning viser, hvordan du kan skrive bash -scriptet på forskellige måder, der venter på, at brugerens input udfører en bestemt opgave eller afslutter scriptet. Håber, efter at have øvet ovenstående eksempler, vil du være i stand til at skrive scriptet på en sådan måde, at det kan vente på ethvert tastetryk og udføre den særlige opgave baseret på den tast, der trykkes af brugeren.