Bash auf Tastendruck warten

Bash Wait Keypress

Der Befehl `read` wird verwendet, um Benutzereingaben in einem Bash-Skript aufzunehmen. Wir können Eingaben in einem Bash-Skript entgegennehmen, indem wir verschiedene Arten von Optionen mit dem Befehl read verwenden. Manchmal müssen wir das Skript so schreiben, dass das Skript so lange ausgeführt wird, bis eine bestimmte Taste gedrückt wird oder das bestimmte Skript basierend auf der bestimmten Taste ausgeführt wird oder das Programm eine bestimmte Zeit wartet, bis eine beliebige Taste gedrückt wird. Wie Sie ein Bash-Skript schreiben können, um auf einen bestimmten Schlüssel oder einen beliebigen Schlüssel für einige Aufgaben zu warten, wird in diesem Tutorial anhand verschiedener Beispiele gezeigt.

Beispiel 1:

Erstellen Sie eine Bash-Datei mit dem folgenden Skript. Wenn Sie das Skript ausführen, wird es fortgesetzt, bis der Benutzer eine beliebige Taste drückt. Das Skript wartet alle 3 Sekunden auf die Eingabe des Benutzers und wenn der Benutzer keine Taste drückt, wird die Nachricht gedruckt. warten auf den Tastendruck .



#!/bin/bash
rauswerfen 'Drücken Sie eine beliebige Taste, um fortzufahren'
während [ wahr ];tun
lesen -T 3 -n 1
wenn [ $?=0 ];dann
Ausfahrt;
anders
rauswerfen 'warte auf den Tastendruck'
Sein
getan

Führen Sie das Skript aus.



$bashkey1.sh

Ausgabe:



Beispiel #2:

Erstellen Sie eine Bash-Datei mit dem folgenden Skript. In diesem Beispiel wird eine unendliche while-Schleife verwendet, die beendet wird, wenn der Benutzer „q“ drückt. Wenn der Benutzer eine beliebige Taste ohne „q“ drückt, wird der Wert der Zählervariablen um 1 erhöht und der Wert gedruckt.

#!/bin/bash
rauswerfen 'Zum Beenden 'q' drücken'
zählen=0
während:;tun
lesen -n 1zu<&1
wenn [[ $ k= q]];dann
druckenf ' Verlassen des Programms '
brechen
anders
((zählen=$zählen+1))
druckenf ' Iterieren für$zählenmal '
rauswerfen 'Zum Beenden 'q' drücken'
Sein
getan

Führen Sie das Skript aus.



$bashkey2.sh

Ausgabe:

Beispiel #3:

Erstellen Sie mit dem folgenden Skript eine Bash-Datei, die basierend auf der vom Benutzer gedrückten Taste verschiedene Arten von Aufgaben ausführt. Wenn der Benutzer „1“ drückt, werden zwei Befehlszeilenargumente hinzugefügt und gedruckt. Wenn der Benutzer „2“ drückt, werden zwei Befehlszeilenargumente abgezogen und gedruckt. Das Skript wird kontinuierlich ausgeführt, bis der Benutzer „3“ drückt.

#!/bin/bash
v1=$ 1
v2=$ 2
während:
tun
rauswerfen '1. Zusatz'
rauswerfen '2. Subtraktion'
rauswerfen '3. Aufhören'
rauswerfen -n 'Typ 1 oder 2 oder 3 :'
lesen -n 1 -T fünfzehnzu
druckenf ' '
Fall $ a in
1* ) rauswerfen '$v1+$v2=$(($v1+$v2)) ';;

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

3* ) Ausfahrt 0;;


* ) rauswerfen 'Versuchen Sie es nochmal.';;
esac
getan

Führen Sie das Skript mit zwei numerischen Argumentwerten aus.

$bashkey3.sh35 fünfzehn

Ausgabe:

Beispiel #4:

Erstellen Sie eine Bash-Datei mit dem folgenden Skript. Das Skript wird beendet, wenn der Benutzer die ESC-Taste drückt. Dieses Skript druckt die vom Benutzer gedrückten Tasten, bis die ESC-Taste gedrückt wird.

#!/bin/bash
Benutzereingabe=''
rauswerfen 'Zum Beenden die ESC-Taste drücken'
# ein einzelnes Zeichen lesen
während lesen -R -n1Schlüssel
tun
# wenn Eingabe == ESC-Taste
wenn [[ $schlüssel== $'Und' ]];
dann
brechen;
Sein
# Fügen Sie den Schlüssel zu der Variablen hinzu, die vom Benutzer gedrückt wird.
Benutzereingabe+=$schlüssel
getan
druckenf ' Sie haben eingegeben:$Benutzereingabe '

Führen Sie das Skript aus.

$bashkey4.sh

Ausgabe:

Beispiel#5:

Erstellen Sie eine Bash-Datei mit dem folgenden Code, die auf die EINGABETASTE wartet, um das Skript zu beenden. Das Skript nimmt einen Servernamen als Eingabe und versucht alle 2 Sekunden, den Server zu pingen. Wenn der Ping-Befehl die Antwort vom Server erhält, wird das Skript beendet, indem die Ausgabe angezeigt wird.

#!/bin/bash
rauswerfen 'Geben Sie die Serveradresse ein, die Sie anpingen möchten'
lesenServer
während ! Klingeln -C 1 -n -IN 2 $server
tun
rauswerfen 'Versuchen, eine Verbindung herzustellen mit$server'
rauswerfen 'Zum Beenden [ENTER] drücken'
lesen -S -N 1 -T 1Schlüssel
wenn [[ $schlüssel== $'x0a' ]];# wenn Eingabe == ENTER-Taste
dann
Ausfahrt 0
Sein
getan
druckenf '%S ' '$serverläuft'

Führen Sie das Skript aus.

$bashkey5.sh

Ausgabe:

Abschluss:

Dieses Tutorial zeigt, wie Sie das Bash-Skript auf verschiedene Weise schreiben können, das auf die Eingabe des Benutzers wartet, um eine bestimmte Aufgabe auszuführen oder das Skript zu beenden. Hoffentlich können Sie nach dem Üben der obigen Beispiele das Skript so schreiben, dass es auf jeden Tastendruck warten und die jeweilige Aufgabe basierend auf der vom Benutzer gedrückten Taste ausführen kann.