Bash czekaj na keypress

Bash czekaj na keypress
Polecenie „odczyt” służy do przyjmowania danych wejściowych użytkownika w skrypcie Bash. Możemy wziąć wejście w skrypcie BASH, używając różnych rodzajów opcji z poleceniem Read Command. Czasami musimy napisać skrypt w taki sposób, aby skrypt uruchomiony do momentu naciśnięcia konkretnego klawisza lub konkretny skrypt zostanie wykonany na podstawie konkretnego klucza lub program będzie czekał na określony czas, aż naciśnię dowolnego klawisza. Jak możesz napisać skrypt bash, aby czekać na dowolny konkretny klucz lub dowolny klucz do niektórych zadań, jest pokazany w tym samouczku za pomocą różnych przykładów.

Przykład 1:

Utwórz plik bash z następującym skryptem. Po uruchomieniu skryptu będzie kontynuowany, dopóki użytkownik naciśnie dowolnego klawisza. Skrypt będzie czekać na dane wejściowe użytkownika co 3 sekundy, a jeśli użytkownik nie naciśnij żadnego klucza, wydrukuje wiadomość ”,„Czekam na keypress".

#!/bin/bash
echo „Naciśnij dowolny klawisz, aby kontynuować”
podczas gdy [prawda]; Do
odczyt -t 3 -n 1
Jeśli [$? = 0]; Następnie
Wyjście ;
w przeciwnym razie
Echo „Czekanie na keypress”
fi
zrobione

Uruchom skrypt.

$ bash key1.cii

Wyjście:

Przykład nr 2:

Utwórz plik bash z następującym skryptem. Nieskończony, gdy pętla jest używana w tym przykładzie, który zakończy się, gdy użytkownik naciśnie „Q”. Jeśli użytkownik naciska dowolny klawisz bez „Q”, wartość zmiennej licznika zostanie zwiększona o 1 i wydrukuj wartość.

#!/bin/bash
echo „prasa” q ', aby wyjść ”
Count = 0
chwila : ; Do
czytaj -n 1 k <&1
jeśli [[$ k = q]]; Następnie
printf "\ nquiting z programu \ n"
przerwa
w przeciwnym razie
((Count = $ Count+1))
printf "\ niterate dla $ Count Times \ n"
echo „prasa” q ', aby wyjść ”
fi
zrobione

Uruchom skrypt.

$ bash key2.cii

Wyjście:

Przykład nr 3:

Utwórz plik bash z następującym skryptem, 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ł w sposób ciągły, dopóki użytkownik naciśnie „3”.

#!/bin/bash
v1 = 1 $
v2 = 2 USD
chwila :
Do
Echo ”1. Dodatek"
Echo ”2. Odejmowanie"
Echo ”3. Zrezygnować"
echo -n "typ 1 lub 2 lub 3:"
odczyt -n 1 -t 15 a
printf "\ n"
sprawa $ a in
1*) echo „$ v1 + $ v2 = $ (($ v1 + $ v2))” ;;
2*) echo „$ v1 - $ v2 = $ (($ v1- $ v2))” ;;
3*) Wyjście 0 ;;
*) Echo „Spróbuj ponownie.";;
esac
zrobione

Uruchom skrypt z dwoma wartościami argumentów numerycznych.

$ bash key3.SH 35 15

Wyjście:

Przykład nr 4:

Utwórz plik bash z następującym skryptem. Skrypt zakończy się, gdy użytkownik naciśnie klawisz ESC. Ten skrypt wydrukuje klawisze naciśnięte przez użytkownika, aż do naciśnięcia klawisza ESC.

#!/bin/bash
userInput = ""
echo „Naciśnij klawisz ESC, aby rzucić”
# Przeczytaj pojedynczy znak
Podczas czytania -r -n1 klucz
Do
# Jeśli wejście == Klucz ESC
jeśli [[$ key == $ '\ e']];
Następnie
przerwa;
fi
# Dodaj klawisz do zmiennej, która jest naciśnięta przez użytkownika.
UserInput+= $ klucz
zrobione
printf "\ nyou wpisał: $ userInput \ n"

Uruchom skrypt.

$ bash key4.cii

Wyjście:

Przykład nr 5:

Utwórz plik bash z następującym kodem, który będzie czekać, aż klawisz Enter na zakończenie skryptu. Skrypt podejmie nazwę serwera jako wejście i będzie próbował pingować serwer w ciągu 2 sekund. Jeśli polecenie ping otrzyma odpowiedź z serwera, zakończy skrypt, wyświetlając wyjście, w przeciwnym razie będzie czekać na odpowiedź użytkownika lub wpisz klucz, drukując komunikat „Próbuję połączyć się z…”.

#!/bin/bash
echo „Wprowadź adres serwera, który chcesz, aby ping”
Przeczytaj serwer
chwila ! ping -c 1 -n -w 2 $ serwer
Do
Echo „Próbuję połączyć się z $ Server”
echo „Naciśnij [Enter], aby zakończyć”
odczyt -s -n 1 -t 1 klucz
jeśli [[$ key == $ '\ x0a']]; # Jeśli wejście == Wprowadź klucz
Następnie
Wyjście 0
fi
zrobione
printf "%s \ n" "$ server działa"

Uruchom skrypt.

$ bash key5.cii

Wyjście:

Wniosek:

Ten samouczek pokazuje, w jaki sposób możesz napisać skrypt bash na różne sposoby, które będą czekać na wejście użytkownika, aby wykonać dowolne określone zadanie lub zakończyć skrypt. Mam nadzieję, że po ćwiczeniu powyższych przykładów będziesz mógł napisać skrypt w taki sposób, który może poczekać na dowolne keypress i wykonać konkretne zadanie na podstawie klucza naciśniętego przez użytkownika.