loop

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von Marc2468, 12.12.2006.

  1. #1 Marc2468, 12.12.2006
    Marc2468

    Marc2468 Grünschnabel

    Dabei seit:
    26.09.2006
    Beiträge:
    9
    Zustimmungen:
    0
    Hallo,
    ich hätte eine Frage zur Loopfuntion in einem Bash Skript.
    Wenn ich in einem Bash Skript eine "case" Schleife schreibe (siehe Beispiel), kann ich dann diese "loopen" lassen?
    Beispiel:
    Code:
    #!/bin/sh
    echo "Bitte 1 oder 2 eingeben"
    read a;
    
    case $a in
    1) echo "1 ist die eingegebene Zahl";;
    2) echo "2 ist die eingegebene Zahl";;
    3) echo "3 ist die eingegebene Zahl";;
    4) echo "4 ist die eingegebene Zahl";;
    *) echo "die Eingabe ist falsch!"
    echo "bitte 1 oder 2 eingeben"
    read a;
    # Was muss ich hier eingeben, damit die Schleife von vorne beginnt?!;;
    esac
    
    Ich würde mich über eine Antwort freuen, Danke schon mal!
    Gruß Marc.
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. Xanti

    Xanti Mouse Organist

    Dabei seit:
    05.09.2004
    Beiträge:
    1.855
    Zustimmungen:
    0
    Code:
    while true; do
    ....
    done
    
    Gruss, Xanti
     
  4. #3 hoernchen, 12.12.2006
    hoernchen

    hoernchen UBERgarstiges nagetier

    Dabei seit:
    17.02.2005
    Beiträge:
    1.081
    Zustimmungen:
    0
    @xanti : ginge auch eine for (;;)-schleife ? (hab grad keine shell greifbar...)
     
  5. Xanti

    Xanti Mouse Organist

    Dabei seit:
    05.09.2004
    Beiträge:
    1.855
    Zustimmungen:
    0
    Klaro, so gehts:

    Code:
    for ((;;)); do
    ...
    done
    
    Gruss, Xanti
     
  6. #5 Marc2468, 12.12.2006
    Zuletzt bearbeitet: 12.12.2006
    Marc2468

    Marc2468 Grünschnabel

    Dabei seit:
    26.09.2006
    Beiträge:
    9
    Zustimmungen:
    0
    @Xanti: Danke, das ist schon mal ein Ansatz, damit kann ich die komplette Schleife wiederholen lassen, aber ich möchte nur eine wiederholung wenn der letzte Punkt anspringt (*), also bei Falscheingabe.

    Denn wenn ich
    Code:
    while true; do #darüber
    ...
    done #drunter
    
    eingebe, hab ich dass Problem, dass bei einer Falscheingabe zwar die Schleife wiederholt wird, bei einer richtigen, in die Unendlichkeit, aber auch!

    bei der for Schleife, die Du noch hingeschriben hast, besteht genau das selbe Problem!

    Dafür währ ne Lösung noch total super, Danke schon mal!

    Gruß Marc.
     
  7. Xanti

    Xanti Mouse Organist

    Dabei seit:
    05.09.2004
    Beiträge:
    1.855
    Zustimmungen:
    0
    case ist nicht als Schleife konzipiert. Wenn Du unbedingt mit case arbeiten willst, solltest Du in der while-Bedingung den Exit-Status der case-Umgebung abfragen.

    Gruss, Xanti
     
  8. rikola

    rikola Foren Gott

    Dabei seit:
    23.08.2005
    Beiträge:
    2.133
    Zustimmungen:
    0
    Versuche es doch mit einem 'break' am Ende jedes Falles:
    Code:
    while true; do
    case $a in 
    1) echo "1 eingegeben"; break ;;
    ...
    *) echo "Nochmal";;
    esac
    done
    
     
  9. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  10. #8 Marc2468, 12.12.2006
    Marc2468

    Marc2468 Grünschnabel

    Dabei seit:
    26.09.2006
    Beiträge:
    9
    Zustimmungen:
    0
    @rikola: klasse!!! Du bist ein Gott! ;-)
    Mit den einfachsten sachen kann einem geholfen werden!
    So funktionierts einwandfei!

    Damit ist mein Problem gelöst!
    Danke an alle Beteiligten!

    Gruß Marc.
     
  11. #9 Schlaubi_fi.de, 12.12.2006
    Schlaubi_fi.de

    Schlaubi_fi.de Mac OS X User

    Dabei seit:
    22.12.2004
    Beiträge:
    304
    Zustimmungen:
    0
    Right - den Abbruch der Schleife mit break hätte ich hier auch empfohlen :D

    -ups bissi zu spät, sry-
     
Thema:

loop

Die Seite wird geladen...

loop - Ähnliche Themen

  1. kerneloops

    kerneloops: ---------- your system had a kernel failure ---------- Tja, benutze Debian seit zwei Jahren und das war mein erstes Mal! - Was genau ist ein...
  2. while loop - ich blicks nicht

    while loop - ich blicks nicht: Moin ich hab da irgendwie ein Problem, ich raffs nicht so ganz was da falsch läuft. Vielleicht kann mir einer von euch kurz sagen was da falsch...
  3. Oder Bedingung in UNTIL Loop

    Oder Bedingung in UNTIL Loop: Hallo allerseits, mit der folgenden Anweisung führe ich ein Schleife aus, die so lange läuft, bis ich über die serielle Schnittstelle einen...
  4. mplayer -loop ohne Flackern

    mplayer -loop ohne Flackern: geloest:mplayer -loop ohne Flackern Hallo, ich moechte gerne mplayer benutzen, um aus einer PDF-Praesentation einen Film abzuspielen (mit...
  5. Wie kann man ein Loop Device einbinden?

    Wie kann man ein Loop Device einbinden?: Guten Tag! Ich benutze schon seit langen Unixsysteme, hatte aber gedacht, mit dem Wechsel auf OSX künftig auf Kommandozeilen verzichten zu...