Ce programme permet de créer facilement des menus KSH. En effet, il contient toute la gestion du menu dont les paramètres sont dans la librairie .mmg passé en paramètre.
Voici un exemple :
Choix du programme à lancer :
______________________________________________
1) Hello World………………………: 1
2) Appel du sous menu………………..: 2 OK
______________________________________________
q) Sortir du Menu.(0 menu precedent)……: q
______________________________________________
Prêt>
Voici le code du programme (MGmenu.sh )
et les deux librairie de menu (Menu.mmg Sous_Menu.mmg).
##################################################################
#
#@(#) Fonction : Menu de gestion des Verification application cadre
#
#@(#) Creation : 1.0 M. Gavini 06/09/2012
#@(#) Modif :
#
##################################################################
#
#@(#) Fichier : MGmenu.sh
#@(#) Syntaxe : MGmenu.sh
#
#@(#) Version : 1.0 en test (en cours / en test / valide)
#
##################################################################
FctExitAbort () {
### —————————————————————-
# Fonction : Sortie du programme en erreur
# Usage : FctExitAbort
### —————————————————————-
echo « \n$c_error »
if [ $(uname -a |awk ‘{ print $1 }’) = « Linux » ]
then
echo ABORT_${NChap}
else
banner ABORT_${NChap}
fi
RC=${NChap}
FlagExitAbort= »oui »
echo « liste des menu : »
ls -trl *.mmg
exit ${NChap}
return 0
}
FctValidezContinuer () {
### —————————————————————-
# fonction : Affichage du valider pour continuer
# Usage : FctValidezContinuer
### —————————————————————-
echo « ..Validez pour continuer »
read mapause
return 0
}
gfedt_Colors() {
### —————————————————————-
# Fonction : Affichage de la couleur
# Usage : gfedt_Colors
### —————————————————————-
if [ « $gvedt_Colors » != « disable » ]
then
# write x background black
blanc_noir= »\033[37;40m »
rouge_noir= »\033[31;40m »
vert_noir= »\033[32;40m »
jaune_noir= »\033[33;40m »
bleu_noir= »\033[34;40m »
mauve_noir= »\033[35;40m »
ciel_noir= »\033[36;40m »
c_help=$ciel_noir
c_menu=$jaune_noir
c_normal=$blanc_noir
c_ok=$vert_noir
c_error=$rouge_noir
c_info=$vert_noir
c_pause=$mauve_noir
fi
}
echo « .. 1) Debut du programme »
#####
Dat_traitement=$(date +%Y%m%d_%H%M)
MESSAGE_OK= ».. Fin de ${NomProg} OK. »
MESSAGE_KO= ».. Erreur ${NomProg} »
Decallage= ».. »
integer CODE_RETOUR=0
integer NChap=1
WDEBUG=non ; WLOG=oui
Pret= »Prêt> »
echo « ${Decallage} »
# ________________________________________________________________
NomProg=$0
integer Lig=0
integer MaxLigMenu=0
integer NbOption=0
integer I=0
export WMenuOra= »oui »
DoubleCote=' »‘
#
set -A TabLibe « deb » # Tableau des libellé des lignes du menu
set -A TabFonc « deb » # Tableau des fonctions des lignes du menu
set -A TabFait « deb » # Tableau des code retours des lignes du menu
# Activation du mode couleur
gfedt_Colors
let NChap=NChap+1 ; echo « .. ${NChap}) Traitement des Parametres du programme $0 »
#####
if [ -z « ${1} » ] ; then echo « .. manque 1er param Librairie De Fonction (MGLib….mmg) » ; FctExitAbort ; fi
if [ -z « ${WDEBUG} » ] ; then WDEBUG=non ; export WDEBUG ; fi
LibrairieDeFonction=${1} ; export LibrairieDeFonction
if [ ! $(echo « ${LibrairieDeFonction} » | grep « $mmg ») ]
then
echo « Erreur de type d’extension de la librairie de Fonction <${1}> »
echo « .mmg obligatoire »
echo « »
echo « liste des menu : »
ls -trl *.mmg
FctExitAbort
fi
#
echo « ${Decallage} »
let NChap=NChap+1 ; echo « .. ${NChap}) Execution du Menu »
#####
. ${LibrairieDeFonction}
#
let MaxLigMenu=${#TabLibe[*]}
let NChap=NChap+1 ; echo « .. ${NChap}) Appel de la librairie de fonction »
#####
# RepInstallOutil : Le repertoire d’installation du produit
RepInstallOutil=/applis/xutlde/pur/trt/sh
while true
do
tput clear
echo « »
echo « ${c_ok}\n »
if [ $(uname -a |awk ‘{ print $1 }’) = « Linux » ]
then
echo ${TitreMenu}
else
banner ${TitreMenu}
fi
echo « ${c_normal}\n »
echo « ${c_info} »
echo « »
echo « Choix du programme à lancer : »
echo « ______________________________________________ »
# Boucle d’affichage du menu ou du sous menu
let Lig=1
while ((Lig<MaxLigMenu))
do
if [ ${Lig} -lt 10 ] ; then DebLigMenu= » « ; else DebLigMenu= » »; fi
echo « ${DebLigMenu}${TabLibe[${Lig}]} ${TabFait[${Lig}]} »
let Lig=Lig+1
done
echo « ______________________________________________ »
echo » q) Sortir du Menu.(0 menu précédent)……: q »
echo « ______________________________________________ »
# Attente du choix
echo « \n${c_menu}${Pret}${c_normal} » |awk ‘{printf(« %s », $0)}’
read Choix
# Test du choix
# Q q : on sort
if [ « ${Choix} » = « q » -o « ${Choix} » = « Q » ]
then
echo « Sortie du menu … »
exit 0
fi
# 0 ou vide : on revient au menu précédent
if [ « ${Choix} » = « 0 » -o -z « ${Choix} » ]
then
break
else
# Exécution de la fonction demandée »
tput clear
# __________________________________________
${TabFonc[${Choix}]}
if [ $? -eq 0 ]
then
TabFait[${Choix}]= »OK »
fi
# __________________________________________
fi
done
$ cat Menu_Principal.mmg
#!/bin/ksh
##################################################################
#
#@(#) Fonction : Librairie de fonction de la creation des BASELINES
#
#@(#) Creation : 1.0 M. Gavini 21/01/2015
#@(#) Modif :
#
##################################################################
#
#@(#) Fichier : Menu_Principal.mmg
#@(#) Syntaxe : MGmenu.sh Menu_Principal.mmg
#
#@(#) Version : 1.0 Valide (en cours / en test / valide)
#
##################################################################
# ________________________________________________________________
TitreMenu= »MenuPrinc »
FctHelloWorld (){
echo « Hello World »
echo « »
FctValidezContinuer
return 0
}
FctAppelSousMenu (){
echo « Valider pour lancer le sous menu »
echo « »
FctValidezContinuer
${RepInstallOutil}/MGmenu.sh MGLIB_Sous_Menu.mmg
return 0
}
if [ « $USER » = « root » ]
then
echo « Attention, ne pas utiliser ce programme avec le user ROOT !!! »
echo « Utiliser votre user de connexion perso. »
FctExitAbort
fi
# Paramètres de gestion du menu :
# Lig : la ligne du menu
# TabFonc : table des fonctions contenant les commandes à exécuter
# TabLibe : table des libellé des fonctions affiché par le menu
let Lig=Lig+1 ; TabFonc[${Lig}]= »FctHelloWorld » ; TabLibe[${Lig}]= » ${Lig}) Hello World………………………: ${Lig} »
let Lig=Lig+1 ; TabFonc[${Lig}]= »FctAppelSousMenu » ; TabLibe[${Lig}]= » ${Lig}) Appel du sous menu………………..: ${Lig} »
#
echo « .. Fin de la librairie de fonction »
#
$ cat Sous_Menu.mmg
#!/bin/ksh
##################################################################
#
#@(#) Fonction : Librairie de fonction du sous menu
#
#@(#) Creation : 1.0 M. Gavini 21/01/2015
#@(#) Modif :
#
##################################################################
#
#@(#) Fichier : Sous_Menu.mmg
#@(#) Syntaxe : MGmenu.sh Sous_Menu.mmg
#
#@(#) Version : 1.0 Valide (en cours / en test / valide)
#
##################################################################
# ________________________________________________________________
TitreMenu= »SousMenu »
FctLs (){
echo « Fonction ls »
ls
echo « »
FctValidezContinuer
return 0
}
FctLs_trl (){
echo « Fonction ls -trl »
ls -tlr
echo « »
FctValidezContinuer
return 0
}
if [ « $USER » = « root » ]
then
echo « Attention, ne pas utiliser ce programme avec le user ROOT ! »
echo « Utiliser votre user de connexion perso. »
FctExitAbort
fi
# Paramètres de gestion du sous menu :
# Lig : la ligne du menu
# TabFonc : table des fonctions contenant les commandes à exécuter
# TabLibe : table des libellé des fonctions affiché par le menu
let Lig=Lig+1 ; TabFonc[${Lig}]= »FctLs »
TabLibe[${Lig}]= » ${Lig}) ls………………………………: ${Lig} »
let Lig=Lig+1 ; TabFonc[${Lig}]= »FctLs_trl »
TabLibe[${Lig}]= » ${Lig}) ls -trl………………………….: ${Lig} »
#
echo « .. Fin de la librairie de fonction »
#