Création
d'entreprise
Posez votre question Signaler

Bash:choix multiples de case puis utilisation

kedal7 205Messages postés 8 juin 2007Date d'inscription - Dernière réponse le 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
Lire la suite 

Bash:choix multiples de case puis utilisation »

5 réponses
Réponse
+4
moins plus
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
Ajouter un commentaire
Réponse
+1
moins plus
oki c'est bien ce qu'il me semblait tant pis merci ça pourra toujours me servir ;)
Ajouter un commentaire
Réponse
+0
moins plus
Essaye cela. Getkey est un petit outils qui renvoi le code ASCII de la touche tapée. Le code ASCII de 1 est 49, celui de A est 64. Je te déconseille toutefois l'utilisation des lettres à cause de la différence Maj/Min.

@ECHO OFF
:DEBUT
CLS
ECHO --------------------
ECHO 1 - Programme 1
ECHO 2 - Programme 2
ECHO 3 - Retour au DOS
ECHO --------------------

:DEMANDE
ECHO 1, 2, ou 3?
GETKEY

REM 52 prend en compte les touches autres que 1, 2 ou 3
IF ERRORLEVEL 52 GOTO DEMANDE
IF ERRORLEVEL 51 GOTO L3
IF ERRORLEVEL 50 GOTO L2
IF ERRORLEVEL 49 GOTO L1
GOTO QUERY
:L1
REM Commandes nécessaires pour lancer le programme 1
GOTO START
:L2
REM Commandes nécessaires pour lancer le programme 2
GOTO START
:L3
CLS


Tu peux récupérer GETKEY.COM à cette adresse http://cjoint.com/?fywlvxmGoQ
P.S. Mets le dans ton PATH
Ajouter un commentaire
Réponse
+0
moins plus
Salut,

merci pour ta réponse.
J'ai oublié de préciser que je vais éxécuter mon script sous linux, ubuntu 8.04 plus précisément.
Ce que tu as marqué est toujours valable ? ;p
Ajouter un commentaire
Réponse
+0
moins plus
Désolé c'est du DOS pur et dur.
Ajouter un commentaire
Ce document intitulé « bash:choix multiples de case puis utilisation » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?