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

xunil2003 Messages postés 766 Date d'inscription   Statut Membre Dernière intervention   -  
zipe31 Messages postés 34620 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.

2 réponses

  1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 502
     
    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
    1. 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
    2. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 502
       
      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
  2. xunil2003 Messages postés 766 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
    1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 502
       
      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