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
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.
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
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