Bash:choix multiples de case puis utilisation [Fermé]

Signaler
Messages postés
206
Date d'inscription
vendredi 8 juin 2007
Statut
Membre
Dernière intervention
7 janvier 2014
-
Messages postés
3645
Date d'inscription
dimanche 18 mars 2001
Statut
Modérateur
Dernière intervention
15 janvier 2017
-
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

Messages postés
3645
Date d'inscription
dimanche 18 mars 2001
Statut
Modérateur
Dernière intervention
15 janvier 2017
928
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

Messages postés
831
Date d'inscription
jeudi 3 janvier 2008
Statut
Membre
Dernière intervention
11 septembre 2011
81
Désolé c'est du DOS pur et dur.
Messages postés
206
Date d'inscription
vendredi 8 juin 2007
Statut
Membre
Dernière intervention
7 janvier 2014
18
oki c'est bien ce qu'il me semblait tant pis merci ça pourra toujours me servir ;)
Messages postés
831
Date d'inscription
jeudi 3 janvier 2008
Statut
Membre
Dernière intervention
11 septembre 2011
81
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 https://www.cjoint.com/?fywlvxmGoQ
P.S. Mets le dans ton PATH
Messages postés
206
Date d'inscription
vendredi 8 juin 2007
Statut
Membre
Dernière intervention
7 janvier 2014
18
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