Interraction utilisateur

Paramètres

Unix-style

Bash-style


Prompt

La commande read permet de récupérer interactivement une entrée de l’utilisateur.

while true; do
  printf "Terminer le processus [y/N]? "
  read answer

  if [ "$answer" = "y" ]; then
    exit
  fi
done

On peut lire non seulement du texte mais aussi des touches spéciales:

flechehaut=$'\x1b[A'
flechebas=$'\x1b[B'
flechegauche=$'\x1b[D'
flechedroite=$'\x1b[C'

read -s -n3 -p "Appuyez sur une flèche : " x

case "$x" in
$flechehaut)
   echo "Vous avez appuyé sur la flèche haute"
   ;;
$flechebas)
   echo "Vous avez appuyé sur la flèche basse"
   ;;
$flechegauche)
   echo "Vous avez appuyé sur la flèche gauche"
   ;;
$flechedroite)
   echo "Vous avez appuyé sur la flèche droite"
   ;;
esac

Select

select permet d’afficher une question à choix multiple.
Il se comporte comme une boucle: il affiche un prompt à l’utilisateur tant qu’on ne break pas.

echo "Que voulez-vous faire?"
select action in "ActionA" "ActionB" "Quitter"
do
  echo "Vous avez dit: $action"
  if [ "$action" = "Quitter" ]; then
    break
  fi
done
Que voulez-vous faire?
1) ActionA
2) ActionB
3) Quitter
#? 1
Vous avez dit: ActionA
#? 
1) ActionA
2) ActionB
3) Quitter
#? 4
Vous avez dit: 
#? 3
Vous avez dit: Quitter
$

Couleurs


Écrire dans stderr

# Écrit dans stdout
echo "Tout va bien"

# Écrit dans stderr
echo "Une erreur" >&2

Code retour

La commande exit permet d’arrêter l’execution du script avec un statut donné (code numérique) — ou 0 si omis.

file="/var/file"

if [ ! -f $file ]; then
  echo "Le fichier $file n'existe pas" >&2
  exit 1
fi

Exit Codes with Special Meanings