oiooiooioiioooiioiioiooo
Goto Top

Bash Skript erneute Ausgae vom case Inhalt

Guten Tag,

gib es eine Möglichkeit, nee einen Moment, anders.

Wie kann ich die Ausgabe vom case wiederholen?

Mit echo kam ich bis jetzt nicht weiter.

Also meine Absicht ist es in dem nachfolgendem Menü bei eine Fehleingabe die vorhandenen Möglichkeiten noch einmal vorgeführt werden. Oder, wenn ein Prozess beendet wurde und in dem Menü nach dem "brake" die Stufe des Menüs verändert wird und der Benutzer die möglichen Optionen angezeigt bekommt.

Ich hab es mit "while" probiert, hab aber leider kein mögliche Logik dazu finden können.

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
#!/bin/bash

#x=0
#while [ $x = 0 ]
#do
#       clear
#       echo "SUCHE" 
#       read auswahl

PS3="Bitte wählen : "  
select auswahl in A B C Ende
 do
   case "$auswahl" in  
MENUE=${      Ende)  echo "Ende" ; break ;;  
        "")  echo "$REPLY: Ungültige Auswahl" ;;  
         A)  select auswahla in A1 A2 A3 Ende
             do
               case "$auswahla" in  
                  Ende) echo "Ende A" ; x=1 ; break ;;  
                    "") echo "$REPLY: Ungültige Auswahl A" ;;  
                    A1) echo "A1 ist pazieren" ; x=1 ;;  
                    A2) echo "A2 ist verschwunden" ; x=1 ;;  
                    A3) echo "A3 ist hinter dir" ; x=1 ;;  
                  esac
#                echo "Auswahl $auswahla" 
             done ;;
         B)  select auswahl in B1 B2 B3 Ende
             do
                echo "Auswahl $auswahlb"  
             done ;;
         C) select auswahl in C1 C2 B3 Ende
             do
                echo "Auswahl $auswahlc"  
             done ;;
         Ende) echo "ENDE"; x=1 ; exit ;;  
         *)  echo "Ihre Auswahl war : $auswahl" ;;  
 }
   esac
done

Viele Grüße

Ich

Content-ID: 472559

Url: https://administrator.de/forum/bash-skript-erneute-ausgae-vom-case-inhalt-472559.html

Ausgedruckt am: 11.04.2025 um 14:04 Uhr

NetzwerkDude
NetzwerkDude 14.07.2019 aktualisiert um 21:51:49 Uhr
Goto Top
Schreibe eine function "draw_menu" und rufe diese bei bedarf auf
https://bash.cyberciti.biz/guide/Writing_your_first_shell_function
OIOOIOOIOIIOOOIIOIIOIOOO
OIOOIOOIOIIOOOIIOIIOIOOO 16.07.2019 um 10:54:45 Uhr
Goto Top
Zitat von @NetzwerkDude:

Schreibe eine function "draw_menu" und rufe diese bei bedarf auf
https://bash.cyberciti.biz/guide/Writing_your_first_shell_function

Hallo @NetzwerkDude

vielen Dank für Ihre Antwort.

So wie ich das erkennen konnte, handelt es sich in diesem Fall um eine andere Art von Menü. Muss sagen es ist sogar ein sehr schönes Menü. Leider ist es jedoch für meinen Einsatzzweck ehe weniger geeignet. Hab viele Einträge und die Eingaben müssen schnell und sicher erfolgen. Ich könnte jedoch diese Funktion in Untermenü Level3 unterbringen.

Mit "while" habe ich mir zwar eine Logik überlegt mit welche ich mein derzeitiges Problem beseitigen kann. Aber dann kann ich die Fehleingaben beim schreiben des Skriptes eventuell nicht rechtzeitig erkennen. Zumal der Aufbau sich extrem verkompliziert und vor allem könnte ich falsche Werte in die optische Anzeige rein bringen, was dann zur Falscheingabe führen könnte.

Gibt es echt keine Möglichkeit bei dem zuvor geschriebenem Menü meinen Vorhaben umzusetzen?

Die aus meiner Sicht komplizierte Variante schaut so aus:

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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
#!/bin/bash
PS3="Bitte wählen:"  
KEINEEINGABE="Sie müssen eine Auswahl treffen!"  
FALSCHEEINGABE="Diese Option steht Ihnen nicht zur Verfügung. Ihre Auswahl war :"  
xZ="Zurück"  
xE="Beenden"  
x1="Auswahl A"  
x1A="Auswahl A1"  
x1B="Auswahl A2"  
x1C="Auswahl A3"  
x2="Auswahl B"  
x2A="Auswahl B1"  
x2B="Auswahl B2"  
x2C="Auswahl B3"  
x3="Auswahl C"  
x3A="Auswahl C1"  
x3B="Auswahl C2"  
x3C="Auswahl C3"  
x4="Auswahl D"  
x4A="Auswahl D1"  
x4B="Auswahl D2"  
x4c="Auswahl D3"  

y1=0
while [ $y1 = 0 ]
do
        clear
        echo "WARTUNGSZENTRALE"  

echo "  
        1 - $x1         3 - $x3
        2 - $x2         4 - $x4
                        E - $xE

$PS3 "  
read auswahl

   case "$auswahl" in  
        "E")  echo "Ende" ; break ;;  

        "1")  
                y2=0
                while [ $y2 = 0 ]
                 do
                  clear
                    echo "Level 2 A"  
                    echo "  
      1 - $x1A          3 - $x1C
      2 - $x1B
      Z - $xZ           E - $xE
         $PS3"  
         read auswahl
             case "$auswahl" in  
                     1) echo "A1 ist spazieren" ; y2=1 ; sleep 1 ;;  
                     2) echo "A2 ist verschwunden" ; y2=1 ; sleep 1 ;;  
                     3) echo "A3 ist hinter dir" ; y2=1 ;sleep 1 ;;  
                     Z) echo "Hauptmenü" ; y2=1 ; sleep 1 ; break ;;  
                     z) echo "Hauptmenü" ; y2=1 ; sleep 1 ; break ;;  
                     E) echo "Beenden" ; y2=1 ; sleep 1 ; exit ;;  
                     e) echo "Beenden" ; y2=1 ; sleep 1 ; exit ;;  
                    "") echo "$KEINEEINGABE" ; sleep 1 ;;  
                     *) echo "$FALSCHEEINGABE $auswahl" ; sleep 1 ;;  
                  esac
          done ;;

        "2")  
                y2=0
                while [ $y2 = 0 ]
                 do
                  clear
                    echo "Level 2 B"  
                    echo "  
      1 - $x2A          3 - $x2C
      2 - $x2B
      Z - $xZ           E - $xE
         $PS3"  
         read auswahl
             case "$auswahl" in  
                     1) echo "B1 ist spazieren" ; y2=1 ; sleep 1 ;;  
                     2) echo "B2 ist verschwunden" ; y2=1 ; sleep 1 ;;  
                     3) echo "B3 ist hinter dir" ; y2=1 ;sleep 1 ;;  
                     Z) echo "Hauptmenü" ; y2=1 ; sleep 1 ; break ;;  
                     z) echo "Hauptmenü" ; y2=1 ; sleep 1 ; break ;;  
                     E) echo "Beenden" ; y2=1 ; sleep 1 ; exit ;;  
                     e) echo "Beenden" ; y2=1 ; sleep 1 ; exit ;;  
                    "") echo "$KEINEEINGABE" ; sleep 1 ;;  
                     *) echo "$FALSCHEEINGABE $auswahl" ; sleep 1 ;;  
                  esac
          done ;;

         "3")  
                y2=0
                while [ $y2 = 0 ]
                 do
                  clear
                    echo "Level 2 C"  
                    echo "  
      1 - $x3A          3 - $x3C
      2 - $x3B
      Z - $xZ           E - $xE
         $PS3"  
         read auswahl
             case "$auswahl" in  
                     1) echo "C1 ist spazieren" ; y2=1 ; sleep 1 ;;  
                     2) echo "C2 ist verschwunden" ; y2=1 ; sleep 1 ;;  
                     3) echo "C3 ist hinter dir" ; y2=1 ;sleep 1 ;;  
                     Z) echo "Hauptmenü" ; y2=1 ; sleep 1 ; break ;;  
                     z) echo "Hauptmenü" ; y2=1 ; sleep 1 ; break ;;  
                     E) echo "Beenden" ; y2=1 ; sleep 1 ; exit ;;  
                     e) echo "Beenden" ; y2=1 ; sleep 1 ; exit ;;  
                    "") echo "$KEINEEINGABE" ; sleep 1 ;;  
                     *) echo "$FALSCHEEINGABE $auswahl" ; sleep 1 ;;  
                  esac
          done ;;


         "4")  
                y2=0
                while [ $y2 = 0 ]
                 do
                  clear
                    echo "Level 2 D"  
                    echo "  
      1 - $x4A          3 - $x4C
      2 - $x4B
      Z - $xZ           E - $xE
         $PS3"  
         read auswahl
             case "$auswahl" in  
                     1) echo "C1 ist spazieren" ; y2=1 ; sleep 1 ;;  
                     2) echo "C2 ist verschwunden" ; y2=1 ; sleep 1 ;;  
                     3) echo "C3 ist hinter dir" ; y2=1 ;sleep 1 ;;  
                     Z) echo "Hauptmenü" ; y2=1 ; sleep 1 ; break ;;  
                     z) echo "Hauptmenü" ; y2=1 ; sleep 1 ; break ;;  
                     E) echo "Beenden" ; y2=1 ; sleep 1 ; exit ;;  
                     e) echo "Beenden" ; y2=1 ; sleep 1 ; exit ;;  
                    "") echo "$KEINEEINGABE" ; sleep 1 ;;  
                     *) echo "$FALSCHEEINGABE $auswahl" ; sleep 1 ;;  
                  esac
          done ;;

         *)  echo "$FALSCHEEINGABE $auswahl" ; sleep 5 ;;  
   esac
done


Viele Grüße

Ich