passage d'une chaine de paramètres à une fonction
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:
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:
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:
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:
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 ?