Script Bash interactif : comment lire la saisie clavier d’un utilisateur ?
Sommaire
I. Présentation
Dans ce tutoriel, nous allons découvrir une nouvelle notion en Bash puisque nous allons apprendre à lire la saisie d'un utilisateur dans un script Bash. En récupérant la saisie d'un utilisateur, nous pourrons adapter le comportement de notre script en fonction des données fournies par l'utilisateur, à l'aide de la saisie au clavier. Ceci pourra permettre à l'utilisateur de préciser une valeur de configuration personnalisée à envoyer à notre script.
Ainsi, vous allez découvrir comment utiliser la commande read dans un script Bash, par l'intermédiaire de différents exemples pratiques.
Pour rappel, voici le lien vers notre introduction au Bash :
II. Saisie utilisateur en Bash : une seule valeur
La commande read est utilisée pour lire l'entrée de l'utilisateur dans un script Bash. Voici un exemple simple où le script demande à l'utilisateur de saisir son prénom.
#!/bin/bash
echo "Saisissez votre prénom :"
read prenom
echo "Bonjour, $prenom!"
Dans ce script, la commande read lit la saisie de l'utilisateur et stocke la saisie dans la variable "prenom". Ensuite, cette variable est utilisée pour afficher un message personnalisé, ici un simple "Bonjour" où nous reprenons la valeur saisie par l'utilisateur. Cette instruction est précédée par une ligne avec un "echo" pour indiquer à l'utilisateur ce qu'il doit saisir (cette ligne précède le prompt).
Vous pouvez exécuter ce script en le sauvegardant dans un fichier (par exemple "read1.sh"). Voici un exemple :
Pour que le message du prompt et la saisie soit sur la même ligne, l'option "-p" doit être précisée. Ce qui donne :
#!/bin/bash
read -p "Saisissez votre prénom : " prenom
echo "Bonjour, $prenom!"
III. Saisie utilisateur en Bash : plusieurs valeurs
Nous pouvons lire plusieurs saisies de l'utilisateur avec une seule commande read. Voici un exemple où le script demande à l'utilisateur de saisir son prénom et son nom de famille.
#!/bin/bash
echo "Saisissez votre prénom et votre nom :"
read prenom nom
echo "Bonjour, $prenom $nom !"
echo "Prénom : $prenom"
echo "Nom : $nom"
Dans ce script, la commande read attend deux valeurs de la part de l'utilisateur et les stocke respectivement dans les variables "prenom" et "nom". Ensuite, nous appelons ces variables pour afficher un simple message, ainsi que le prénom et le nom de façon indépendante pour bien voir l'affectation aux variables.
Voici le résultat obtenu :
Passons maintenant à l'utilisation de la saisie utilisateur avec une validation.
IV. Valider la saisie de l'utilisateur
Comment s'assurer que l'utilisateur a bien saisi une valeur ? En effet, un utilisateur pourrait tout à fait ne pas indiquer de valeur et simplement appuyer sur Entrée, ce qui peut poser un problème à notre script. La bonne nouvelle, c'est que vous pouvez valider la saisie de l'utilisateur avant de continuer.
Voici un exemple où le script vérifie si l'utilisateur a bien saisi quelque chose avant de continuer. Tant que la valeur est vide, nous redemandons à l'utilisateur de saisir une valeur. Nous effectuons ce contrôle avec l'opérateur "-z" couplé ici avec une boucle While.
#!/bin/bash
while [ -z $username ]
do
echo "Veuillez saisir votre identifiant :"
read username
done
echo "Identifiant sélectionné : $username"
L'image ci-dessous, montre bien que nous obtenons le résultat attendu.
Passons maintenant à la saisie utilisateur de valeurs sensibles, telle qu'un mot de passe.
V. Saisie utilisateur en Bash : mot de passe
Dans certains cas, notamment lors de la saisie d'un mot de passe, il peut s'avérer judicieux de ne pas afficher la saisie de l'utilisateur à l'écran. La commande read intègre une option pour répondre à ce besoin.
Donc, voici le script que nous allons utiliser :
#!/bin/bash
echo "Saisissez votre mot de passe :"
read -s password
echo "Mot de passe stocké en mémoire"
Dans ce script, l'option "-s" fait en sorte que le mot de passe saisi par l'utilisateur ne soit pas affiché à l'écran. Néanmoins, à l'intérieur du script, la valeur est accessible et n'est pas protégée contre un quelconque mécanisme.
L'image ci-dessous montre bien que la valeur saisie n'est pas affichée à l'écran.
VI. Conclusion
Suite à la lecture de ce tutoriel, vous devriez être en mesure d'intégrer la saisie d'utilisateur à votre script Bash, ce qui va vous permettre de créer des scripts Bash interactifs ! Nous avons vu comment utiliser la commande read avec plusieurs exemples afin de permettre la saisie d'une valeur, de plusieurs valeurs, d'un mot de passe ou encore pour contrôler que la valeur n'est pas vide.
Pour approfondir le sujet, vous pouvez consulter nos tutoriels Bash en utilisant le lien ci-dessous, ou consulter cette page :