Pour la partie purement menu, l'instruction 'select' est bien utile.
Pour plus d'info sur 'select' voir le man.
Un petit exemple de script utilisant 'select' :
Code :
- #!/usr/bin/bash
- # Script : choix.sh
- PS3="Que voulez vous ? "
- select choix in \
- "Premier choix" \
- "Second choix" \
- "Abandon"
- do
- case $REPLY in
- 1) echo "C'est du premier choix :" ;;
- 2) echo "Ce n'est que du second choix !" ;;
- 3) echo "On abandonne ..."
- break ;;
- *) echo "Choix invalide" ;;
- esac
- done
|
[/fixed]
/home/jp> choix.sh
1) Premier choix
2) Second choix
3) Abandon
Que voulez vous ? 5
Choix invalide
Que voulez vous ?
1) Premier choix
2) Second choix
3) Abandon
Que voulez vous ? 2
Ce n'est que du second choix !
Que voulez vous ? 3
On abandonne ...
/home/jp/Tek-Tips>
[fixed]
Pour la partie code associée à chaque option du menu, utilise des fonctions.
- Une fonction doit être définie avant d'être appellée.
- L'appel à la fonction se fait comme pour une commande externe.
- Dans le corps de la fonction, $1 $2 ... correspondent aux paramètres passés à l'appel de la fonction.
- Les paramétres sont passés par valeur
- Les variables définies à l'extérieur de la fonction sont visibles et modifiables.
- Des variables locales à la fonction peuvent être créées avec l'instruction 'local'.
- La sortie de la fonction se fait par 'return n' ou n est le code retour (0)succes). S'il n'y a pas d'instruction 'return' eplicite, la sortie se fait par un 'return $?' implicite lorsque l'exécution du code arrive sur la dernier accolade de la définition de la fonction.
Voici un exemple de fonction avec son utilisation :
Code :
- #!/usr/bin/bash
- # OuiNon -- Saisie réponse Oui/Non
- # Appel: $1 = Question
- # $2 = Réponse par défaut
- # Status: 0 = Oui
- # 1 = Non
- OuiNon()
- {
- local qst def rep
- qst="${1:-'Oui ou Non ? '}"
- def="$2"
- while :
- do
- read -p "$qst" rep || exit 1
- case "$(echo "${rep:-$def}" | tr '[a-z]' '[A-Z]')" in
- O|OUI|Y|YES) return 0 ;;
- N|NON|NO) return 1 ;;
- "" ) : ;;
- *) echo "Réponse invalide: $rep" ;;
- esac
- done
- }
- # Utilisation de la fonction
- if OuiNon "Voulez vous affichez la date ? " Oui
- then date
- else echo "Dommage"
- fi
|
Voici maintenant un exemple de ce que pourrait être ton script (avec utilisation de 'select' et de fonctions) :
---------------
Jean Pierre.