Bash: Imbrication de case ?

Résolu/Fermé
lsda26 - Modifié par mamiemando le 23/09/2013 à 10:23
mamiemando Messages postés 33401 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 28 novembre 2024 - 23 sept. 2013 à 19:22
Bonjour,

J'essaie d'imbriquer 2 case en vain.

Le premier case seul fonctionne bien. Mais dès que je rajoute le second, j'ai le message d'erreur suivant:

./test.sh: line 32: Erreur de syntaxe près du symbole inattendu « ) »
./test.sh: line 32: ' 2)'

Je n'arrive pas à savoir ce qui ne va pas!
Merci pour votre aide!


#!/bin/bash
while read -p "
1: creation 1
2: suppression 2
q: quitter
Faite un choix: " Menu
do
clear
case $Menu in
q)
exit;;
1)
#Creation de certificat
while read -p "
a: Creation SERVER
b: Creation MACHINE
q: quitter
Faite un choix: " Menu2
do
case $Menu2 in
q)
;;
a)
echo "Creation du SERVEUR"
sleep 2;;
b)
echo "Creation de la MACHINE: "
sleep 2;;
*)
echo "Choix non valide!"
sleep 2;;
esac
done
2)
echo "Suppression"
sleep 2;;
*)
echo "Choix non valide!"
sleep 2;;
esac
done

3 réponses

mamiemando Messages postés 33401 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 28 novembre 2024 7 804
23 sept. 2013 à 10:25
Une manière de résoudre le problème, c'est que ton premier case appelle une fonction dans laquelle sera écrite ton 2e case.
https://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO-8.html

Bonne chance
0
J'ai trouvé!
Il me manquait les ;; après le "done" de mon menu 2
Grrrhhhh
0
mamiemando Messages postés 33401 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 28 novembre 2024 7 804
23 sept. 2013 à 19:22
Exact :-) Si je peux me permettre tu devrais indenter ton code, ça le rendrait plus lisible et du coup, tu risquerais moins d'oublier les ";;". Le fait de décomposer ton code en fonction peut également permettre d'éviter ce genre d'écueils.

Bonne continuation.
0