Menu
Coddy logo textTech

L'entrée utilisateur dans les scripts

Fait partie de la section Les fondamentaux du Journey Terminal de Coddy — leçon 69 sur 82.

Les variables sont utiles, mais vous souhaitez parfois que votre script demande des informations à l'utilisateur pendant son exécution. La commande read met le script en pause et attend que l'utilisateur saisisse quelque chose, puis stocke cette entrée dans une variable.

Voici comment cela fonctionne :

#!/bin/bash
echo "What is your name?"
read name
echo "Hello, $name!"

Lorsque ce script s'exécute, il affiche la question, attend que l'utilisateur saisisse son nom et appuie sur Enter, puis le salue. La commande read prend tout ce que l'utilisateur saisit et le stocke dans la variable name.

Vous pouvez rendre l'invite plus propre en utilisant l'option -p, qui combine le message d'invite et la saisie sur la même ligne :

#!/bin/bash
read -p "Enter your name: " name
echo "Hello, $name!"

Cela affiche Enter your name: et attend la saisie sur la même ligne, ce qui est plus élégant. Le fanion -p prend le texte d'invite comme argument, suivi du nom de la variable pour stocker la saisie.

Les entrées de l'utilisateur rendent les scripts interactifs et adaptables. Au lieu de coder les valeurs en dur, vous pouvez écrire un seul script qui fonctionne différemment selon ce que l'utilisateur fournit à chaque exécution.

challenge icon

Défi

Facile

Créez un script shell nommé greeter.sh qui demande à l'utilisateur sa couleur préférée, puis affiche un message utilisant sa réponse.

Votre script doit :

  1. Commencer par la ligne shebang (#!/bin/bash)
  2. Utiliser read avec l'option -p pour afficher l'invite : What is your favorite color?
  3. Stocker la saisie dans une variable nommée color
  4. Utiliser echo pour afficher : Nice! [color] is a great color! (où [color] est la saisie de l'utilisateur)

Rendez le script exécutable, puis exécutez-le avec blue comme saisie. Ce terminal n'est pas interactif — il ne peut pas s'arrêter et attendre que vous tapiez — envoyez donc la réponse au script à l'aide d'un pipe :

echo "blue" | ./greeter.sh

Votre sortie devrait être :

Nice! blue is a great color!

Remarque : l'invite What is your favorite color? n'est pas affichée ici. read -p n'affiche son invite que lorsque la saisie provient d'un clavier, et ici elle provient du pipe.

Conseil : Construisez le script ligne par ligne en utilisant echo avec redirection. Utilisez read -p "What is your favorite color? " color pour demander et capturer la saisie, puis echo "Nice! $color is a great color!" pour afficher le résultat.

Essayez vous-même

Terminal
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Les fondamentaux