Bonjour,

Je souhaite créer une fonction qui génère un menu dont les choix sont transmis en paramètres à la fonction (sauf le choix Quitter)

voici la fonction:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
function Menu()
{
        echo "Que voulez vous faire ?"
        echo ""
        for ((n=1; n<=$#; n++))
        do
                echo "Option ("$n") : "${!n}
        done
        echo "Choix (q): Quitter"
        echo ""
        echo ""
        echo "Votre choix ? : "
Pour transmettre les choix en paramètres, l'idée est de créer une chaine $listeParam qui contiendrait "choix 1 choix 2 choix 3"
Or vu comme ça c'est 6 paramètres qui sont transmis à la fonction (choix, 1, choix, 2, choix, 3) et non 3 (choix 1, choix 2, choix 3) à cause des espaces

Voici comment je procède:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
nbChoix=3 
listeParam=""
for ((i=1; i<=nbChoix; i++))
do
        listeParam=$listeParam"Choix "$i" "
done
Menu $listeParam
Bien sur si je retire l'espace entre choix et $i
Code : Sélectionner tout - Visualiser dans une fenêtre à part
listeParam=$listeParam"choix"$i" "
j'aurai bien Choix1 Choix2 Choix3, mais le but est de remplacer "Choix n"par du texte contenant des espaces

Voici ce que je souhaiterais obtenir comme résultat:

Option (1) : Choix 1
Option (2) : Choix 2
Option (3) : Choix 3
Option (q): Quitter

Si je rajoute un \:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
listeParam=$listeParam"choix\ "$i" "
ça sort:

Option (1) : choix\
Option (2) : 1
Option (3) : choix\
Option (4) : 2
Option (5) : choix\
Option (6) : 3
Option (q): Quitter

J'ai essayé aussi avec "eval" mais j'ai des erreurs de "commande inconnue"


Quelqu'un aurait il une idée sur la façon dont je dois procéder ?