Créer un menu dans un script qui revient au menu automatiquemen

Fermé
xunil2003 Messages postés 761 Date d'inscription mercredi 17 novembre 2004 Statut Membre Dernière intervention 24 mars 2024 - Modifié par xunil2003 le 2/03/2013 à 22:59
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 - 4 mars 2013 à 15:18
Bonjour,

J'ai créer un menu et je voudrais que le menu dans le script revienne automatiquement au menu lorsqu'une case a été exécuté.

Ce qui suit et un exemple
#!/bin/bash  
echo "" 

select CHOIX in "Sauvegarde 1" \ 
  "sauvegarde 2" \ 
  "restauration 1" \ 
  "restauration 2" \ 

  "q = Quitter"; 
 do 
  case $REPLY in 
   1) bla bla 1;; 
   2) bla bla 2;; 
   3) bla bla 3;; 
   4) bla bla 4;; 
   5) bla bla 5;; 
   quitter) exit;; 
   q) exit;; 
   *) echo "Choix incorrect";; 
  esac 
done


Comment puis je faire ?
Merci.

A voir également:

2 réponses

zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
3 mars 2013 à 09:04
Salut,

#!/bin/bash  
echo "" 

while :
do
select CHOIX in "Sauvegarde 1"\
 "sauvegarde 2" \
 "restauration 1" \
 "restauration 2" \
 "q = Quitter"; 
 do 
  case $REPLY in 
   1) echo bla bla 1;continue 2;; 
   2) echo bla bla 2;continue 2;; 
   3) echo bla bla 3;continue 2;; 
   4) echo bla bla 4;continue 2;; 
   5) echo bla bla 5;continue 2;; 
   q|quitter) echo bye;exit;; 
   
   *) echo "Choix incorrect";continue 2;; 
  esac 
 done
done

0
Utilisateur anonyme
3 mars 2013 à 14:09
Normalement, on ne sort d'un select que par une instruction break.
Par contre, select n'affiche pas le menu à chaque boucle.
Pour atteindre cet objectif, il suffit d'une boucle while,d'un echo, et d'un case, mais select est alors superflu.
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
3 mars 2013 à 14:21
Salut,

Merci pour toutes ces précisons. Ne m'étant quasiment jamais servi de "select" il est vrai que je n'en connaissais pas très bien sa syntaxe et ses subtilités. C'est chose faite à présent.

La preuve :

#!/bin/bash  

PS3="Sélectionner une action : "
select CHOIX in "Sauvegarde 1"\
 "sauvegarde 2" \
 "restauration 1" \
 "restauration 2" \
 "q = Quitter"; 
 do 
  case $REPLY in 
   1) echo bla bla 1;echo "Voulez-vous effectuer une autre action ?";; 
   2) echo bla bla 2;echo "Voulez-vous effectuer une autre action ?";; 
   3) echo bla bla 3;echo "Voulez-vous effectuer une autre action ?";; 
   4) echo bla bla 4;echo "Voulez-vous effectuer une autre action ?";; 
   5) echo bla bla 5;echo "Voulez-vous effectuer une autre action ?";; 
   q|quitter) echo bye;break;; 
   
   *) echo "Choix incorrect";echo "Voulez-vous effectuer une autre action ?";; 
  esac 
 done

Merci encore à toi QQCQCPQ ;-))
0
xunil2003 Messages postés 761 Date d'inscription mercredi 17 novembre 2004 Statut Membre Dernière intervention 24 mars 2024 14
Modifié par xunil2003 le 4/03/2013 à 14:53
Bonjour,

Merci à tous pour vos réponses.
Je ne trouve pas la solution pour mettre le menu, au complet.
Après chaque commentaire, la commande doit rester entre parenthésé sur la droite.
Et je me retrouve avec plus de commentaire dans le menu a l'affichage au final ?
La touche 8 ne correspond pas à exit.

il m'affiche :
+----------------------------+
| Tentitive de connexion ssh |
+----------------------------+

1) Compte le nombre de Autentification
2) Fail de tentives de connexions (expr 10) 
3) Compte le nombre de Autentification
4) Accepted de tentives de connexions (expr 10)
5) Liste les tentatives de connexion Failed (grep Failed /var/log/auth.log)
6) Liste les connexions Accepted (grep Accepted /var/log/auth.log)
7) Afficher l'historique des connexions SSH (last | more)
8) q = Quitter
Sélectionner une action : 8
Choix incorrect
Voulez-vous effectuer une autre action ?
Sélectionner une action : q
bye
serveur@Debian:~$  



le code :
#!/bin/bash  
echo ""
echo "+----------------------------+"
echo "| Tentitive de connexion ssh |"
echo "+----------------------------+"
echo ""
PS3="Sélectionner une action : "
select CHOIX in "Compte le nombre de "Autentification Fail" de tentives de connexions (expr 'zcat /var/log/auth.log*gz | grep -c "authentication failure"') "\
 "Compte le nombre de "Autentification  Accepted" de tentives de connexions (expr 'zcat /var/log/auth.log*gz | grep -c "authentication failure"')" \
 "Liste les tentatives de connexion Failed (grep Failed /var/log/auth.log)" \
 "Liste les connexions Accepted (grep Accepted /var/log/auth.log)" \
 "Afficher l'historique des connexions SSH (last | more)" \
 "q = Quitter"; 
 do 
  case $REPLY in 
   1) echo bla bla 1;echo "Voulez-vous effectuer une autre action ?";; 
   2) echo bla bla 2;echo "Voulez-vous effectuer une autre action ?";; 
   3) echo bla bla 3;echo "Voulez-vous effectuer une autre action ?";; 
   4) echo bla bla 4;echo "Voulez-vous effectuer une autre action ?";; 
   5) echo bla bla 5;echo "Voulez-vous effectuer une autre action ?";; 
   q|quitter) echo bye;break;; 
   
   *) echo "Choix incorrect";echo "Voulez-vous effectuer une autre action ?";; 
  esac 
 done  

Merci
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
Modifié par zipe31 le 4/03/2013 à 15:19
Salut,

C'est bizarre chez moi tout est bien interprété (ou à peu près) : voir screenshot

Par contre juste un truc, dans tes expressions entre parenthèses c'est des quotes simples ou des backs quotes (quotes inversées "Alt Gr+7") ?
0