Rechercher : dans
Par :

Bash:choix multiples de case puis utilisation

Dernière réponse le 25 mai 2008 à 15:11:38 kedal7, le 24 mai 2008 à 19:16:24 
 Signaler ce message aux modérateurs

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

Configuration: Windows XP/Ubuntu 8.04
Firefox 2.0.0.14

Meilleures réponses pour « bash:choix multiples de case puis utilisation » dans :
Casque audio, écouteurs, casque audio sans fil: comment choisir VoirPour regarder un film en toute tranquillité ou pour écouter de la musique sur un baladeur MP3, on ne va pas utiliser le même casque. Tout ce qu’il faut savoir pour bien choisir son casque. Présentation des produits Les écouteurs Le...
Choisir sa mémoire vive VoirChoisir sa ram Sommaire: Données à prendre en compte La fréquence DDR ? DDR2 ? DDR3 ? Le CAS Le dual channel Informations complémentaires Le lien entre ram et la carte graphique Les constructeurs Combien de ram ? Données à prendre...
[Linux] Débuter sous Linux VoirDÉBUTER SOUS LINUX Qu'est-ce que Linux ? Si vous venez de Windows I - LES LIVE-CDS I-1 Quelles distributions choisir ? I-2 Utilisation II - INSTALLER LINUX II-1 Partitionner son disque dur II-2 Multiboot Windows/Linux II-3 Quelles...
UML - Cas d'utilisation (Use cases) VoirCas d'utilisation Un cas d'utilisation (en anglais use case) permet de mettre en évidence les relations fonctionnelles entre les acteurs et le système étudié. Le format de représentation d'un cas d'utilisation est complètement libre mais UML...
Webmastering - Conception d'un site web VoirConception d'un site web La conception d'un site web doit être une démarche participative, orientée utilisateurs, c'est-à-dire qu'elle doit se faire, autant que possible, en concertation avec un ensemble de représentants de l'entreprise ou de...

1

dandypunk, le 24 mai 2008 à 22:14:34

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
Il y a certainement plus simple, mais ça tourne.
SNOC XUA TROM (Vieille devise coloniale)

Répondre à dandypunk

2

kedal7, le 25 mai 2008 à 12:17:06

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

Répondre à kedal7

3

dandypunk, le 25 mai 2008 à 12:29:50

Désolé c'est du DOS pur et dur. Il y a certainement plus simple, mais ça tourne.
SNOC XUA TROM (Vieille devise coloniale)

Répondre à dandypunk

4

kedal7, le 25 mai 2008 à 12:39:36

Oki c'est bien ce qu'il me semblait tant pis merci ça pourra toujours me servir ;)

Répondre à kedal7

5

 jisisv, le 25 mai 2008 à 15:11:38
  • +1

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

Gates gave you the windows.
GNU gave us the whole house.(Alexandrin)

Répondre à jisisv