Rendez-vous sur Arrakiss
Table des matières

    Un menu à choix multiples en shell avec select

    Pour obtenir un menu ressemblant à :

    1) Choix1
    2) Choix2
    3) Choix3
    #?
    

    on peut utiliser select, une fonction présente dans la plupart des shells. Afin de me simplifier la vie, j’en ai fait une fonction qui prend en argument une liste de choix. Par exemple, pour enregistrer dans une variable var le choix de l’utilisateur, on pourra écrire :

    var=$(selmenu "Choix1 Choix2 Choix3")
    

    Voici donc la fonction selmenu:

    selmenu() {
    ### show a menu from a list in $@ and return user choice
    	ans=""
    	select item in $@; do
    		if [ $REPLY -gt 0 -a $REPLY -le $# ]; then
    			echo $item
    			break
    		fi
    	done
    }
    

    Si vous n’aimez pas le prompt #?, vous pouvez le définir avant d’appeler la fonction selmenu en modifiant la variable PS3:

    PS3="Faîtes un choix"
    var=$(selmenu Choix1 Choix2 Choix3)