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.

#!/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-Key: 472559

Url: https://administrator.de/contentid/472559

Printed on: May 9, 2024 at 02:05 o'clock

Member: NetzwerkDude
NetzwerkDude Jul 14, 2019 updated at 19:51:49 (UTC)
Goto Top
Schreibe eine function "draw_menu" und rufe diese bei bedarf auf
https://bash.cyberciti.biz/guide/Writing_your_first_shell_function
Member: OIOOIOOIOIIOOOIIOIIOIOOO
OIOOIOOIOIIOOOIIOIIOIOOO Jul 16, 2019 at 08:54:45 (UTC)
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:

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