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

xunil2003 Messages postés 765 Date d'inscription   Statut Membre Dernière intervention   -  
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   -
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   Statut Contributeur Dernière intervention   6 430
 
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
 
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   Statut Contributeur Dernière intervention   6 430
 
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 765 Date d'inscription   Statut Membre Dernière intervention   14
 
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   Statut Contributeur Dernière intervention   6 430
 
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