Réalisant qu'il s'agit d'un vieux post... Voici mon conseil à ce sujet :
select
fournit beaucoup d'aide ici.
PS3="What's your choice? (^D to stop choosing): "
select mainmenuinput in updatesystem installsamba installvsftpd installwebmin configuresambaforactivedirectory quitprogram; do
case "$mainmenuinput" in
"updatesystem")
echo "Update System..."
;;
"installsamba")
echo "Installing Samba..."
;;
#echo And so forth...
esac
done
echo Done
Pour obtenir de l'aide sur select
, consultez man bash
et recherchez 'select'. Ne fournir aucune entrée répétera le menu.
select name [ in word ] ; do list ; done
The list of words following in is expanded, generating a list of items. The set of expanded words is printed on the standard error, each preceded by a number. If the in word is omitted, the
positional parameters are printed (see PARAMETERS below). The PS3 prompt is then displayed and a line read from the standard input. If the line consists of a number corresponding to one of
the displayed words, then the value of name is set to that word. If the line is empty, the words and prompt are displayed again. If EOF is read, the command completes. Any other value read
causes name to be set to null. The line read is saved in the variable REPLY. The list is executed after each selection until a break command is executed. The exit status of select is the
exit status of the last command executed in list, or zero if no commands were executed.
Exemple de sortie :
[rinzler ~] $ ./test.sh
1) updatesystem 4) installwebmin
2) installsamba 5) configuresambaforactivedirectory
3) installvsftpd 6) quitprogram
What's your choice? (^D to stop choosing): 1
Update System...
What's your choice? (^D to stop choosing): 2
Installing Samba...
What's your choice? (^D to stop choosing):
1) updatesystem 4) installwebmin
2) installsamba 5) configuresambaforactivedirectory
3) installvsftpd 6) quitprogram
What's your choice? (^D to stop choosing):
Done