Bash : Créer un menu avec plusieurs sous menu ---> HELP

Fermé
xunil2003 Messages postés 766 Date d'inscription mercredi 17 novembre 2004 Statut Membre Dernière intervention 29 septembre 2024 - Modifié par xunil2003 le 6/12/2012 à 20:59
 Utilisateur anonyme - 7 déc. 2012 à 10:19
Bonjour,

J'ai fait un script bash avec plusieurs sous menu.
L'objectif est que lorsque l'utilisateur sélectionne un sous menu il reste dedans.

ça marche pour le sous menu 1 met pas pour les autres non.
Je ne sais pas ou est mon erreur exactement ?

Merci pour votre aide.

#! /bin/bash     

echo "--- Menu général ---"     
echo "Saisissez un choix,  <q> pour quitter le menu"     
echo "<1>  Menu 1"     
echo "<2>  Menu 2"     
echo "<3>  Menu 3"       
echo ""     
echo "<10> q = Quitter"     

read choix_mg     
case $choix_mg in     

10) exit;;     
q) exit ;;     

1)  choix_M1=$null     
  until [ $choix_M1 = "Q" ] ; do     
  echo ""     
  echo "--- Menu 1 ---"     
  echo "Saisissez un choix,  <q> pour quitter le menu"     
  echo "<1>  test 1"     
  echo "<2> test 2"     
  echo "<3> test 3"     
  echo ""     
  echo "<4> Quitter"     
  read choix_M1     
  if [ $choix_M1 != "Q" ]; then     
  case $choix_M1 in      
  1) echo "test Menu1 choix 1" ;;     
  2) echo "test Menu1 choix 2"  ;;     
  3) echo "test Menu1 choix 3" ;;     
  4) exit;;     
  q) exit;;     
  quitter) exit;;     
  exit) exit;;     
  *) echo "Choix incorrect";;     
  esac     

  fi     
  done     
  echo ""     
  esac      
       
2)  choix_M2=$null     
  until [ $choix_M2 = "Q" ] ; do     
  echo ""     
  echo "--- Menu 2 ---"     
  echo "Saisissez un choix,  <q> pour quitter le menu"     
  echo "<1>  test 1"     
  echo "<2> test 2"     
  echo "<3> test 3"     
  echo ""     
  echo "<4> Quitter"     
  read choix_M2     
  if [ $choix_M2 != "Q" ]; then     
  case $choix_M2 in      
  1) echo "test Menu2 choix 1" ;;     
  2) echo "test Menu2 choix 2"  ;;     
  3) echo "test Menu2 choix 3" ;;     
  4) exit;;     
  q) exit;;     
  *) echo "Choix incorrect";;     
  esac     

  fi     
  done     
  echo ""     
  esac      
       
3)  choix_M3=$null     
  until [ $choix_M3 = "Q" ] ; do     
  echo ""     
  echo "--- Menu 3 ---"     
  echo "Saisissez un choix,  <q> pour quitter le menu"     
  echo "<1>  test 1"     
  echo "<2> test 2"     
  echo "<3> test 3"     
  echo ""     
  echo "<4> Quitter"     
  read choix_M3     
  if [ $choix_M3 != "Q" ]; then     
  case $choix_M3 in      
  1) echo "test Menu3 choix 1" ;;     
  2) echo "test Menu3 choix 2"  ;;     
  3) echo "test Menu3 choix 3" ;;     
  4) exit;;     
  q) exit;;     
  *) echo "Choix incorrect";;     
  esac     

  fi     
  done     
  echo ""     
  esac      


Résultat de l'erreur pour les sous menu 2 et 3.
laurent@PC-ubuntu:~$ sh /home/laurent/bash/Ubuntu_12.04/test2.sh     
--- Menu général ---     
Saisissez un choix,  <q> pour quitter le menu     
<1>     Menu 1     
<2>     Menu 2     
<3>     Menu 3     
<4>     Menu 4     

<10>    q = Quitter     
2     
/home/laurent/bash/Ubuntu_12.04/test2.sh: 55: /home/laurent/bash/Ubuntu_12.04/test2.sh: Syntax error: ")" unexpected     
laurent@PC-ubuntu:~$ 


La ligne 55 est :
2)  choix_M2=$null


Merci.

A voir également:

3 réponses

Utilisateur anonyme
7 déc. 2012 à 10:19
case a in
   toto) case b in
            un) :
            ;;  
            deux) :
            ;;  
         esac
   titi) :
   ;;  
esac
Ça, c'est indenté! en respectant le code, pas ce qui doit être affiché.

Chaque esac tombe sous son case

C'est valable pour tout : if/fi, do/done...
1
Utilisateur anonyme
6 déc. 2012 à 22:33
salut,

2) est en dehors du premier case !

avec une indentation rigoureuse, tu l'aurais vu.
0
xunil2003 Messages postés 766 Date d'inscription mercredi 17 novembre 2004 Statut Membre Dernière intervention 29 septembre 2024 14
Modifié par xunil2003 le 6/12/2012 à 23:59
Bonsoir,

Justement je ne trouve pas la solution.
y a un truc qui doit m'échapper.
Pour l'indentation j'ai respecté les tabus de chaque sous menu.
Merci.
0