17/11/2024

Bash

Script Bash interactif : comment lire la saisie clavier d’un utilisateur ?

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 :

Script Bash - Saisie utilisateur avec read

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 :

Script Bash - Saisie utilisateur avec plusieurs valeurs

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.

Script Bash - Saisie utilisateur avec controle valeur vide

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.

Script Bash - Saisie utilisateur mot de passe

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 :

author avatar
Florian BURNEL Co-founder of IT-Connect
Ingénieur système et réseau, cofondateur d'IT-Connect et Microsoft MVP "Cloud and Datacenter Management". Je souhaite partager mon expérience et mes découvertes au travers de mes articles. Généraliste avec une attirance particulière pour les solutions Microsoft et le scripting. Bonne lecture.
Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Envoyer par mail

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.