#!/bin/bash
# Bash Menu Script Example
PS3='Please enter your choice: '
options=("Option 1" "Option 2" "Option 3" "Quit")
select opt in "${options[@]}"
do
case $opt in
"Option 1")
echo "you chose choice 1"
;;
"Option 2")
echo "you chose choice 2"
;;
"Option 3")
echo "you chose choice $REPLY which is $opt"
;;
"Quit")
break
;;
*) echo "invalid option $REPLY";;
esac
done
Ajoutez les instructions break
à la sortie de la boucle select
. Si break
n'est pas exécuté, l'instruction select
effectue une boucle et le menu est ré-affiché.
Dans la troisième option, j'ai inclus des variables définies par l'instruction select
pour démontrer que vous avez accès à ces valeurs. Si vous le choisissez, il affichera:
you chose choice 3 which is Option 3
Vous pouvez voir que $REPLY
contient la chaîne que vous avez entrée à l'invite. Il est utilisé comme index dans le tableau ${options[@]}
comme si le tableau était basé sur 1. La variable $opt
contient la chaîne de cet index dans le tableau.
Notez que les choix peuvent être une simple liste directement dans l'instruction select
comme ceci:
select opt in foo bar baz 'multi word choice'
mais vous ne pouvez pas mettre une telle liste dans une variable scalaire à cause des espaces dans l’un des choix.
Vous pouvez également utiliser le regroupement de fichiers si vous choisissez parmi les fichiers:
select file in *.tar.gz