Bash attendre la pression d'une touche

Bash Wait Keypress



La commande `read` est utilisée pour prendre les entrées de l'utilisateur dans un script bash. Nous pouvons prendre des entrées dans le script bash en utilisant différents types d'options avec la commande read. Parfois, nous devons écrire le script de manière à ce que le script s'exécute jusqu'à ce qu'une touche spécifique soit enfoncée ou que le script particulier s'exécute en fonction de la touche spécifique ou que le programme attende le temps spécifique jusqu'à ce qu'une touche soit enfoncée. La façon dont vous pouvez écrire un script bash pour attendre une clé particulière ou une clé pour certaines tâches est illustrée dans ce didacticiel à l'aide de différents exemples.

Exemple 1:

Créez un fichier bash avec le script suivant. Lorsque vous exécuterez le script, il continuera jusqu'à ce que l'utilisateur appuie sur n'importe quelle touche. Le script attendra l'entrée de l'utilisateur toutes les 3 secondes et si l'utilisateur n'appuie sur aucune touche, il imprimera le message, en attente d'appuyer sur une touche .







#!/bin/bash
chassèrent 'Appuyez sur n'importe quelle touche pour continuer'
tandis que [ vrai ];faire
lire -t 3 -n 1
si [ $?=0 ];alors
sortir;
autre
chassèrent 'attendre la pression de la touche'
être
terminé

Exécutez le script.



$frapperclé1.sh

Sortir:







Exemple #2 :

Créez un fichier bash avec le script suivant. Une boucle while infinie est utilisée dans cet exemple qui se terminera lorsque l'utilisateur appuiera sur « q ». Si l'utilisateur appuie sur n'importe quelle touche sans « q », la valeur de la variable de compteur sera augmentée de 1 et imprimera la valeur.

#!/bin/bash
chassèrent 'Appuyez sur 'q' pour quitter'
compter=0
tandis que::faire
lire -n 1à<&1
si [[ k$= q]];alors
imprimer ' Quitter le programme '
Pause
autre
((compter=$compte+1))
imprimer ' Itérer pour$comptefois '
chassèrent 'Appuyez sur 'q' pour quitter'
être
terminé

Exécutez le script.



$frapperclé2.sh

Sortir:

Exemple n°3 :

Créez un fichier bash avec le script suivant qui effectuera différents types de tâches en fonction de la touche enfoncée par l'utilisateur. Si l'utilisateur appuie sur « 1 », il ajoutera deux arguments de ligne de commande et imprimera. Si l'utilisateur appuie sur « 2 », il soustraira deux arguments de ligne de commande et imprimera. Le script s'exécutera en continu jusqu'à ce que l'utilisateur appuie sur « 3 ».

#!/bin/bash
v1=1 $
v2=2 $
tandis que:
faire
chassèrent '1. Une addition'
chassèrent '2. Soustraction'
chassèrent '3. Quitter'
chassèrent -n 'Type 1 ou 2 ou 3 :'
lire -n 1 -t quinzeà
imprimer ' '
Cas $ un dans
1* ) chassèrent '$v1+$v2=$(($v1+$v2)) ';;

2* ) chassèrent '$v1-$v2=$(($v1-$v2)) ';;

3* ) sortir 0;;


* ) chassèrent 'Réessayer.';;
esac
terminé

Exécutez le script avec deux valeurs d'argument numériques.

$frapperkey3.sh35 quinze

Sortir:

Exemple n°4 :

Créez un fichier bash avec le script suivant. Le script se terminera lorsque l'utilisateur appuiera sur la touche ESC. Ce script imprimera les touches enfoncées par l'utilisateur jusqu'à ce que la touche ESC soit enfoncée.

#!/bin/bash
entrée utilisateur=''
chassèrent 'Appuyez sur la touche ESC pour quitter'
# lire un seul caractère
tandis que lire -r -n1clé
faire
# si entrée == touche ESC
si [[ $clé== $'Et' ]];
alors
Pause;
être
# Ajoute la clé à la variable sur laquelle l'utilisateur appuie.
entrée utilisateur+=$clé
terminé
imprimer ' Vous avez tapé :$userinput '

Exécutez le script.

$frapperkey4.sh

Sortir:

Exemple n°5 :

Créez un fichier bash avec le code suivant qui attendra la touche ENTREE pour terminer le script. Le script prendra un nom de serveur en entrée et essaiera de pinger le serveur toutes les 2 secondes. Si la commande ping obtient la réponse du serveur, elle terminera le script en affichant la sortie, sinon elle attendra la réponse de l'utilisateur ou la touche ENTER en imprimant le message, Trying to connect with….

#!/bin/bash
chassèrent 'Entrez l'adresse du serveur que vous souhaitez envoyer par ping'
lireserveur
tandis que ! ping -c 1 -n -DANS 2 $serveur
faire
chassèrent 'Essayer de se connecter avec$serveur'
chassèrent 'Appuyez sur [ENTER] pour terminer'
lire -s -N 1 -t 1clé
si [[ $clé== $'x0a' ]];# si saisie == touche ENTREE
alors
sortir 0
être
terminé
imprimer '%s ' '$serveurest en cours d'exécution'

Exécutez le script.

$frapperkey5.sh

Sortir:

Conclusion:

Ce didacticiel montre comment vous pouvez écrire le script bash de différentes manières qui attendront l'entrée de l'utilisateur pour effectuer une tâche spécifique ou terminer le script. J'espère qu'après avoir pratiqué les exemples ci-dessus, vous serez en mesure d'écrire le script de manière à pouvoir attendre n'importe quelle pression sur une touche et effectuer la tâche particulière en fonction de la touche enfoncée par l'utilisateur.