Bash:choix multiples de case puis utilisation

Fermé
kedal7 Messages postés 206 Date d'inscription vendredi 8 juin 2007 Statut Membre Dernière intervention 7 janvier 2014 - 24 mai 2008 à 19:16
jisisv Messages postés 3645 Date d'inscription dimanche 18 mars 2001 Statut Modérateur Dernière intervention 15 janvier 2017 - 25 mai 2008 à 15:11
Bonsoir,

je voudrais savoir comment réaliser un script en bash permettant à l'utilisateur de choisir plusieurs programmes qu'il souhaite installer et ensuite les installer. Avec un choix q|Q pour quitter et i|I pour lancer l'installation.

J'en suis à la partie "choix multiple". J'ai déjà écris ceci mais il me semble pas que tout soit juste.

merci d'avance !

#!/bin/bash

echo -e "Choisissez le/les programmes à installer.\n
- 1 pour le programme 1\n
- 2 pour le programme 2\n
Appuyez sur la touche souhaiter, puis faites ENTER."
read Touche

while (($Touche != i|I) | ($Touche != q|Q)); do

case "$Touche" in

1) programe1 = 1;; # je ne sais pas comment mettre ici pour pouvoir réutiliser après
2) programme1 =1;; # je ne sais pas comment mettre ici pour pouvoir réutiliser après

done

if programe1 = 1 # pour valider l'installation du programme1

fi

if programe2 = 1 # pour valider l'installation du programme1

fi

# lance l'installation de tout les programmes sélectionnés

5 réponses

jisisv Messages postés 3645 Date d'inscription dimanche 18 mars 2001 Statut Modérateur Dernière intervention 15 janvier 2017 934
25 mai 2008 à 15:11
Tu peux t'inspirer de ceci ,avec utilisatons de vecteurs (array) dans bash. Evidemment on y perd en portabilité, mais bash c'est bash, non ?
#!/bin/bash
declare -a PROGRAMS
PROGRAMS=([1]="/bin/ls ."  [2]="/bin/ls -l .")

while  read -p "Choisissez le/les programmes à installer.
- 1 pour le programme 1
- 2 pour le programme 2
Appuyez sur la touche souhaiter, puis faites ENTER." touche ; do
        case $touche in
                q|Q)
                        exit;;
                1|2)
                        eval ${PROGRAMS[$touche]} ;;
                *)
                        echo "Choix non valide"
        esac
done

Tu placeras bien entendu le prompt dans une variable dédiée.
Ceci n'est qu'une piste et une ébauche bien entendu...
Bon amusement.

man 1 bash
4