Bash czeka na naciśnięcie klawisza

Bash Wait Keypress



Polecenie `read` służy do pobierania danych wejściowych użytkownika w skrypcie bash. Możemy pobierać dane wejściowe w skrypcie bash, używając różnych typów opcji za pomocą polecenia read. Czasami musimy napisać skrypt w taki sposób, aby skrypt działał do momentu naciśnięcia określonego klawisza lub określony skrypt wykonał się na podstawie określonego klawisza lub program czekał określoną ilość czasu na naciśnięcie dowolnego klawisza. Jak napisać skrypt bash, który czeka na konkretny klucz lub dowolny klucz do niektórych zadań, pokazano w tym samouczku na różnych przykładach.

Przykład 1:

Utwórz plik bash za pomocą następującego skryptu. Gdy uruchomisz skrypt, będzie on kontynuowany, dopóki użytkownik nie naciśnie dowolnego klawisza. Skrypt będzie czekał na dane wejściowe co 3 sekundy i jeśli użytkownik nie naciśnie żadnego klawisza, to wyświetli komunikat, czekam na naciśnięcie klawisza .







#!/kosz/bash
wyrzucił 'Naciśnij dowolny klawisz, aby kontynuować'
podczas [ prawda ];robić
czytać -T 3 -n 1
Jeśli [ $?=0 ];następnie
Wyjście;
w przeciwnym razie
wyrzucił „czekam na naciśnięcie klawisza”
być
Gotowe

Uruchom skrypt.



$grzmotnąćkey1.sh

Wyjście:







Przykład #2:

Utwórz plik bash za pomocą następującego skryptu. W tym przykładzie użyto nieskończonej pętli while, która zakończy się, gdy użytkownik naciśnie „q”. Jeśli użytkownik naciśnie dowolny klawisz bez „q”, to wartość zmiennej licznika zostanie zwiększona o 1 i wydrukowana wartość.

#!/kosz/bash
wyrzucił 'Naciśnij 'q', aby wyjść'
liczyć=0
podczas:;robić
czytać -n 1do<&1
Jeśli [[ $ k= q]];następnie
printf ' Rezygnacja z programu '
przerwa
w przeciwnym razie
((liczyć=$count+1))
printf ' Iteruj przez$countczasy '
wyrzucił 'Naciśnij 'q', aby wyjść'
być
Gotowe

Uruchom skrypt.



$grzmotnąćklucz2.sh

Wyjście:

Przykład #3:

Utwórz plik bash za pomocą następującego skryptu, który wykona różne typy zadań w oparciu o klawisz naciśnięty przez użytkownika. Jeśli użytkownik naciśnie „1”, doda dwa argumenty wiersza poleceń i wydrukuje. Jeśli użytkownik naciśnie „2”, odejmie dwa argumenty wiersza poleceń i wydrukuje. Skrypt będzie działał nieprzerwanie, dopóki użytkownik nie naciśnie „3”.

#!/kosz/bash
v1=1 zł
v2=2 zł
podczas:
robić
wyrzucił „1. Dodatek'
wyrzucił „2. Odejmowanie'
wyrzucił „3. Zrezygnować'
wyrzucił -n „Typ 1 lub 2 lub 3:”
czytać -n 1 -T piętnaściedo
printf ' '
Obudowa $ a w
1* ) wyrzucił '$v1+$v2=$(($v1+$v2)) ';;

2* ) wyrzucił '$v1-$v2=$(($v1-$v2)) ';;

3* ) Wyjście 0;;


* ) wyrzucił 'Spróbuj ponownie.';;
esac
Gotowe

Uruchom skrypt z dwiema liczbowymi wartościami argumentów.

$grzmotnąćkey3.sh35 piętnaście

Wyjście:

Przykład nr 4:

Utwórz plik bash za pomocą następującego skryptu. Skrypt zakończy się, gdy użytkownik naciśnie klawisz ESC. Ten skrypt wydrukuje klawisze naciskane przez użytkownika do momentu naciśnięcia klawisza ESC.

#!/kosz/bash
dane wejściowe użytkownika=''
wyrzucił 'Naciśnij klawisz ESC, aby wyjść'
# przeczytaj pojedynczy znak
podczas czytać -r -n1klucz
robić
# jeśli wejście == klawisz ESC
Jeśli [[ $klucz== $'I' ]];
następnie
przerwa;
być
# Dodaj klucz do zmiennej, który jest wciśnięty przez użytkownika.
userinput+=$klucz
Gotowe
printf ' Wpisałeś :$wejście użytkownika '

Uruchom skrypt.

$grzmotnąćkey4.sh

Wyjście:

Przykład nr 5:

Utwórz plik bash z następującym kodem, który będzie czekał, aż klawisz ENTER zakończy działanie skryptu. Skrypt przyjmie nazwę serwera jako dane wejściowe i będzie próbował pingować serwer co 2 sekundy. Jeśli polecenie ping otrzyma odpowiedź z serwera, zakończy działanie skryptu, wyświetlając dane wyjściowe, w przeciwnym razie będzie czekać na odpowiedź użytkownika lub klawisz ENTER, wyświetlając komunikat Próba połączenia z….

#!/kosz/bash
wyrzucił 'Wprowadź adres serwera, który chcesz pingować'
czytaćserwer
podczas ! świst -C 1 -n -W 2 $serwer
robić
wyrzucił „Próbuję się połączyć z”$serwer'
wyrzucił 'Naciśnij [ENTER], aby zakończyć'
czytać -s -N 1 -T 1klucz
Jeśli [[ $klucz== $' x0a' ]];# jeśli wejście == klawisz ENTER
następnie
Wyjście 0
być
Gotowe
printf '%s ' '$serwerbiegnie'

Uruchom skrypt.

$grzmotnąćkey5.sh

Wyjście:

Wniosek:

Ten samouczek pokazuje, w jaki sposób można napisać skrypt bash na różne sposoby, które będą czekać na dane wejściowe użytkownika w celu wykonania określonego zadania lub zakończenia skryptu. Mam nadzieję, że po przećwiczeniu powyższych przykładów będziesz w stanie napisać skrypt w taki sposób, aby mógł czekać na każde naciśnięcie klawisza i wykonać dane zadanie na podstawie klawisza wciśniętego przez użytkownika.