Bash pričekajte pritisak tipke

Bash Wait Keypress



Naredba `read` koristi se za unos korisnika u bash skriptu. Možemo uzeti unos u bash skriptu koristeći različite vrste opcija s naredbom read. Ponekad moramo napisati skriptu na takav način da će se skripta izvoditi dok se ne pritisne određena tipka ili se određena skripta izvede na temelju određene tipke ili će program čekati određeno vrijeme dok se ne pritisne bilo koja tipka. Kako možete napisati bash skriptu za čekanje bilo kojeg ključa ili ključa za neke zadatke prikazano je u ovom vodiču pomoću različitih primjera.

Primjer 1:

Napravite bash datoteku sa sljedećom skriptom. Kad pokrenete skriptu, ona će se nastaviti sve dok korisnik ne pritisne bilo koju tipku. Skripta će čekati unos korisnika svake 3 sekunde i ako korisnik ne pritisne nijednu tipku, ispisat će poruku, čekajući pritiskanje tipke .







#!/bin/bash
izbaciti 'Pritisnite bilo koju tipku za nastavak'
dok [ pravi ];čini
čitati -t 3 -n 1
ako [ $?=0 ];zatim
Izlaz;
drugo
izbaciti 'čekanje pritiska tipke'
biti
učinjeno

Pokrenite skriptu.



$bashkey1.sh

Izlaz:







Primjer 2:

Napravite bash datoteku sa sljedećom skriptom. U ovom primjeru koristi se beskonačna petlja while koja će se prekinuti kada korisnik pritisne 'q'. Ako korisnik pritisne bilo koju tipku bez ‘q’ tada će se vrijednost varijable brojača povećati za 1 i ispisati vrijednost.

#!/bin/bash
izbaciti 'Pritisnite' q 'za izlaz'
računati=0
dok:;čini
čitati -n 1do<&1
ako [[ $ k= q]];zatim
printf ' nOdustajanje od programa n'
pauza
drugo
((računati=$ count+1))
printf ' nPonovite za$ countputa n'
izbaciti 'Pritisnite' q 'za izlaz'
biti
učinjeno

Pokrenite skriptu.



$bashkey2.sh

Izlaz:

Primjer 3:

Napravite bash datoteku sa sljedećom skriptom koja će obavljati različite vrste zadataka na temelju tipke koju je pritisnuo korisnik. Ako korisnik pritisne ‘1’, tada će dodati dva argumenta naredbenog retka i ispisati. Ako korisnik pritisne ‘2’ tada će oduzeti dva argumenta naredbenog retka i ispisati. Skripta će se neprekidno izvoditi sve dok korisnik ne pritisne ‘3’.

#!/bin/bash
v1=1 USD
v2=2 USD
dok:
čini
izbaciti '1. Dodatak'
izbaciti '2. Oduzimanje'
izbaciti '3. Prestati'
izbaciti -n 'Tip 1 ili 2 ili 3:'
čitati -n 1 -t petnaestdo
printf ' n'
slučaj $ a u
1* ) izbaciti '$ v1+$ v2=$ (($ v1+$ v2)) ';;

2* ) izbaciti '$ v1-$ v2=$ (($ v1- $ v2)) ';;

3* ) Izlaz 0;;


* ) izbaciti 'Pokušaj ponovno.';;
esac
učinjeno

Pokrenite skriptu s dvije numeričke vrijednosti argumenta.

$bashkey3.sh35 petnaest

Izlaz:

Primjer#4:

Napravite bash datoteku sa sljedećom skriptom. Skripta će se završiti kada korisnik pritisne tipku ESC. Ova će skripta ispisivati ​​tipke koje korisnik pritisne sve dok ne pritisne tipku ESC.

#!/bin/bash
korisnički unos=''
izbaciti 'Pritisnite tipku ESC za izlaz'
# pročitajte jedan znak
dok čitati -r -n1ključ
čini
# if input == ESC ključ
ako [[ $ ključ== $'I' ]];
zatim
pauza;
biti
# Dodajte ključ varijabli koju korisnik pritisne.
korisnički unos+=$ ključ
učinjeno
printf ' nUpisali ste:$ userinput n'

Pokrenite skriptu.

$bashkey4.sh

Izlaz:

Primjer 5:

Napravite bash datoteku sa sljedećim kodom koja će čekati da tipka ENTER završi skriptu. Skripta će uzeti naziv poslužitelja kao ulaz i pokušat će pingati poslužitelj svake 2 sekunde. Ako naredba ping dobije odgovor od poslužitelja, ona će završiti skriptu prikazivanjem izlaza, u protivnom će čekati odgovor korisnika ili tipku ENTER ispisujući poruku, Pokušavajući se povezati s….

#!/bin/bash
izbaciti 'Unesite adresu poslužitelja koju želite pingati'
čitatiposlužitelja
dok ! ping -c 1 -n -U 2 $ poslužitelj
čini
izbaciti 'Pokušavam se povezati s$ poslužitelj'
izbaciti 'Pritisnite [ENTER] za prekid'
čitati -s -N 1 -t 1ključ
ako [[ $ ključ== $' x0a' ]];# if input == ENTER tipka
zatim
Izlaz 0
biti
učinjeno
printf '%s n' '$ poslužiteljtrči'

Pokrenite skriptu.

$bashkey5.sh

Izlaz:

Zaključak:

Ovaj vodič prikazuje kako možete napisati bash skriptu na različite načine koji će čekati da unos korisnika izvrši bilo koji određeni zadatak ili prekine skriptu. Nadam se da ćete nakon vježbanja gornjih primjera moći napisati skriptu na takav način da može pričekati bilo koji pritisak na tipku i obaviti određeni zadatak na temelju tipke koju je korisnik pritisnuo.