Bonjour à toutes et à tous,
Je suis en train de réaliser un script shell et je rencontre un problème avec l'utilisation de la commande case.
J'ai eu beau chercher sur le net, je n'ai rien trouvé de concluant, c'est pourquoi je me tourne vers vous.
Un exemple valant mieux qu'une explication approximative, regardez ci-dessous ce que j'aimerais faire :
Je rencontre donc un problème dans cette partie :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96 while : do echo "Choix : $CHOIX" echo "Nom :" read NOM echo "Bla bla bla" echo "Choix :" read CHOIX case $CHOIX in 1 | 2 ) mes commandes .... if [[ $CHOIX == "1" ]] then echo "Rep :" read REP case $REP in "o" ) echo "bidule" CHOIX=11 ;; "n" ) echo "chouette" CHOIX=5 ;; * ) echo "erreur" ;; esac else echo "bye" break fi ;; 3 | 11 ) mes commandes .... if [[ $CHOIX == "11" ]] then echo "Rep :" read REP case $REP in "o" ) echo "bidule" CHOIX=12 ;; "n" ) echo "chouette" CHOIX=5 ;; * ) echo "erreur" ;; esac else echo "bye" break fi ;; 4 | 12 ) mes commandes .... if [[ $CHOIX == "12" ]] then echo "bye bye" break else echo "bye" break fi ;; 5 ) echo "Bye" break ;; * ) echo "erreur" ;; esac done
Je rentre bien dans ma boucle if, ainsi que dans mon case donc il prend bien l'entrée clavier et affiche bien le "echo" suivant ce que je saisis au clavier.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 case $REP in "o" ) echo "bidule" CHOIX=11 ;; "n" ) echo "chouette" CHOIX=5 ;; * ) echo "erreur" ;; esac
Mon problème se situe précisément au moment où j’attribue une valeur à ma variable CHOIX, pensant que le script va continuer et passer à "l'étape 11".
Mais ce n'est visiblement pas possible où je m'y prend très mal.
En fait, ce que fait mon script, c'est qu'il m'affiche le "echo" puis revient directement au début de la boucle while et donc de mon script en me demandant de saisir le "Nom".
Et surtout, il ne m'affiche pas d'erreur donc la syntaxe ne doit pas être mauvaise.
J'ai mis un echo "Choix : $CHOIX" au début afin de voir ce qui se passait au moment du passage de la valeur dans la variable, et lorsque c'est une valeur prévue, par exemple 11 ou 5 comme indiqué ci-dessus, la variable CHOIX la prend bien en compte par contre lorsque c'est une autre valeur, la variable CHOIX garde la dernière valeur correct attendue, dans mon cas c'était 1 alors que j'avais saisi 42 au clavier pour REP.
J'espère que j'ai été assez claire dans mes explications mais si ce n'est pas le cas, n'hésitez pas à me poser vos questions sur les parties qui restent floues.
Mais je pense, en gros, que vous voyez ce que je veux faire donc si vous pouvez me donner un coup de main (pas un coup de pied ^^) pour résoudre ce problème ou me conseiller, je suis preneur.
Si vous connaissez une autre méthode pour réaliser ce que je veux faire, n'hésitez pas, je prend aussi.
En vous remerciant par avance pour vos réponses.
Bien cordialement,
Julien.
Partager