Bonjour,
J'aimerais faire un menu dynamique en unix avec pour base un fichier qui aura les options, le nom de l'option et sa commande.
exemple:
1;opt1;echo opt1
2;opt2;echo opt2
Merci
Bonjour,
J'aimerais faire un menu dynamique en unix avec pour base un fichier qui aura les options, le nom de l'option et sa commande.
exemple:
1;opt1;echo opt1
2;opt2;echo opt2
Merci
Bonjour![]()
A ma connaisance et surtout en script shell, je ne pense pas qu'il soit possible de développer un menu dynamique. Tu peux créer un menu tout simple comme tu le ferais en batch sous DOS. J'ai dans mes favoris un petit exemple de menu (pas dynamique) en shell => Shell programming and simple menus.
++![]()
Salut,Envoyé par Soria17
Désolé, mais je ne vois pas qu'est ce que tu veux dire par un menu dynamique, est ce genre un menu dont le contenu pourra etre lu à partir d'un fichier??
Envoyé par Soria17
Je pense que ce qui suit correspond à ta demande:
Contenu du fichier menu.cfg :
1;Liste des fichiers du répertoire courant;ls -l
2;Nom du répertoire courant;echo \$PWD
MenuDynamic.sh :
A l'exécution :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 #!/bin/bash declare -a TabVar typeset -i Ind=0 while read ligne do OptionCode[$Ind]=`echo "$ligne" | cut -d";" -f1` OptionLib[$Ind]=`echo "$ligne" | cut -d";" -f2` OptionCmd[$Ind]=`echo "$ligne" | cut -d";" -f3` #echo "${OptionCode[$Ind]} ${OptionLib[$Ind]} ${OptionCmd[$Ind]}" echo "${OptionCode[$Ind]} ${OptionLib[$Ind]}" ((Ind=$Ind+1)) TabVar[$Ind]=$ligne done < menu.cfg typeset -i IndMax=$Ind Ind=0 echo -n "Votre choix (Abandon : <Ctrl-c>) : " read choix while [[ $Ind -lt $IndMax ]] do if [[ ${OptionCode[$Ind]} -eq $choix ]] ; then echo ${OptionCmd[$Ind]} eval ${OptionCmd[$Ind]} exit fi ((Ind=$Ind+1)) if [[ $Ind -eq $IndMax ]] ; then Ind=0 echo -n "Choix erroné (Abandon : <Ctrl-c>) : " read choix fi done
$ MenuDynamic.sh
1 Liste des fichiers du répertoire courant
2 Nom du répertoire courant
Votre choix (Abandon : <Ctrl-c>) : 2
echo $PWD
/home/HP_Administrateur
Bonjour,
La commande select permet de créer des menus. En lui passant, comme paramètres la première colonne d'un fichier, affichera chaque option disponible qui seront numéroté.
2 colonnes suffissent dans le fichier "listes.lst" car la numérotation se fera via la commande select.
# 2 - Declaration de variables
# ----------------------------
LISTE_OPTIONS="$CHEMIN/listes.lst"
PS3="
Q) Quitter
Veuillez entrer le numero : "
# 3 - Menu de connexion
# ---------------------
clear
echo " Menu"
echo " "
select CHOIX in $(cat $LISTE_OPTIONS | cut -d";" -f1)
do
case $REPLY in
Q|q) exit
;;
*) $(grep $CHOIX | cut -d";" -f2)
;;
esac
done
Partager