Bash Wait for Keypress

Bash Wait for Keypress
La commande 'lecture' est utilisée pour prendre la contribution des utilisateurs dans un script bash. Nous pouvons prendre la contribution dans le script bash en utilisant différents types d'options avec la commande de lecture. Parfois, nous devons écrire le script de telle manière que le script s'exécutera jusqu'à ce qu'une touche spécifique soit appuyée ou que le script particulier s'exécutera en fonction de la touche spécifique ou que le programme attendra le temps spécifique jusqu'à ce que toute touche soit appuyée. Comment vous pouvez écrire Bash Script pour attendre une clé particulière ou toute clé de certaines tâches est affichée dans ce tutoriel en utilisant différents exemples.

Exemple 1:

Créez un fichier bash avec le script suivant. Lorsque vous exécutez le script, il se poursuivra jusqu'à ce que l'utilisateur appuie sur n'importe quelle touche. Le script attendra l'entrée de l'utilisateur dans toutes les 3 secondes et si l'utilisateur n'appuie aucune touche, il imprimera le message: «En attendant la pression".

#!/ bac / bash
Echo "Appuyez sur n'importe quelle touche pour continuer"
tandis que [true]; faire
lire -t 3 -N 1
Si [$? = 0]; alors
sortie ;
autre
Echo "en attente de la pression des touches"
Fi
fait

Exécutez le script.

$ bash key1.shot

Sortir:

Exemple n ° 2:

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

#!/ bac / bash
Echo "Appuyez sur 'Q' pour quitter"
comte = 0
alors que : ; faire
lire -n 1 k <&1
si [[$ k = q]]; alors
printf "\ nquitting du programme \ n"
casser
autre
((count = $ count + 1))
printf "\ niterate pour $ comptage Times \ n"
Echo "Appuyez sur 'Q' pour quitter"
Fi
fait

Exécutez le script.

$ bash key2.shot

Sortir:

Exemple # 3:

Créez un fichier bash avec le script suivant qui fera différents types de tâches en fonction de la touche appuyé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 soustrèrera deux arguments de ligne de commande et imprimera. Le script s'exécutera en continu jusqu'à ce que l'utilisateur appuie sur «3».

#!/ bac / bash
v1 = 1 $
v2 = 2 $
alors que :
faire
Echo "1. Ajout"
Echo "2. Soustraction"
Echo "3. Arrêter"
Echo -n "Type 1 ou 2 ou 3:"
lire -n 1 -t 15 a
printf "\ n"
cas $ a en
1 *) echo "$ v1 + $ v2 = $ (($ v1 + $ v2))" ;;
2 *) echo "$ v1 - $ v2 = $ (($ v1- $ v2))" ;;
3 *) Exit 0 ;;
*) ECHO "Ressayer.";;
ESAC
fait

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

$ bash key3.SH 35 15

Sortir:

Exemple n ° 4:

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

#!/ bac / bash
userInput = ""
Echo "Appuyez sur la touche ESC pour quitter"
# Lire un seul personnage
Pendant la lecture de la touche -r -n1
faire
# if input == clé ESC
si [[$ key == $ '\ e']];
alors
casser;
Fi
# Ajoutez la touche à la variable qui est appuyée par l'utilisateur.
UserInput + = $ clé
fait
printf "\ nyou a tapé: $ userInput \ n"

Exécutez le script.

$ bash key4.shot

Sortir:

Exemple n ° 5:

Créez un fichier bash avec le code suivant qui attendra la touche Entrée pour terminer le script. Le script prendra un nom de serveur en entrée et essaiera de faire un ping au serveur en 2 secondes. Si la commande ping obtient la réponse du serveur, elle terminera le script en affichant la sortie, sinon, il attendra la réponse de l'utilisateur ou entrera en entrée en imprimant le message, «Essayant de se connecter avec…».

#!/ bac / bash
Echo "Entrez l'adresse du serveur que vous souhaitez faire un ping"
lire le serveur
alors que ! Ping -C 1 -N -W 2 $ Server
faire
Echo "Essayer de se connecter avec $ serveur"
Echo "Appuyez sur [Entrée] pour se terminer"
lecture -s -n 1 -t 1 clé
si [[$ key == $ '\ x0a']]; # If Input == Entrez la touche
alors
sortie 0
Fi
fait
printf "% s \ n" "$ Server est en cours d'exécution"

Exécutez le script.

$ bash key5.shot

Sortir:

Conclusion:

Ce tutoriel montre comment vous pouvez écrire le script bash de diverses manières qui attendront que l'entrée de l'utilisateur effectuera une tâche spécifique ou terminez le script. Espérons, après avoir pratiqué les exemples ci-dessus, vous pourrez écrire le script de cette manière qui peut attendre n'importe quelle pression et effectuer la tâche particulière en fonction de la touche appuyée par l'utilisateur.