#!/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
Ajouter break
partout où vous avez besoin de la select
pour sortir. Si un break
n'est pas effectuée, la select
se boucle et le menu est réaffiché.
Dans la troisième option, j'ai inclus des variables qui sont définies par l'option select
pour démontrer que vous avez accès à ces valeurs. Si vous le choisissez, il sera édité :
you chose choice 3 which is Option 3
Vous pouvez voir que $REPLY
contient la chaîne de caractères que vous avez saisie à l'invite. Elle est utilisée comme un index dans le tableau ${options[@]}
comme si le tableau était basé sur 1. La variable $opt
contient la chaîne de caractères de cet index dans le tableau.
Notez que les choix peuvent être une simple liste directement dans le champ select
une déclaration comme celle-ci :
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 globbing des fichiers si vous faites un choix parmi les fichiers :
select file in *.tar.gz