Fehler im Script (while-Schleife)

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von monsterherz, 15.06.2006.

  1. #1 monsterherz, 15.06.2006
    monsterherz

    monsterherz Grünschnabel

    Dabei seit:
    20.08.2003
    Beiträge:
    4
    Zustimmungen:
    0
    Ort:
    kuhkaff in der Pfalz
    halli,hallo
    ich studiere gerade ein Buch unter anderem über Scripting. Habe ein Beispiel-Script angelegt. Ausführbar gemacht:
    Code:
     
    #!/bin/bash
    value=""
    while ["$value"!="ende"];
    do clear
    echo "benutzer: zeigt eingeloggten user"
    echo "prozesse: zeigt laufende prozesse"
    echo "ende: beendet das script"
    echo "Ihre Auswahl:"
    read value
    if ["$value"="benutzer"]; then
    who
    elif ["$value"="prozesse"];then
    ps
    elif ["$value"="ende"];then
    echo 'ahoi'
    else 
    echo "keine unterstützung"
    fi
    echo "bitte enter drücken"
    read garbage
    done
    
    Leider bekomm ich einen Fehler:

    schlepptop uebungen # ./menu.sh
    ./menu.sh: line 3: [!=ende]: command not found


    Versteh ich nicht... - wer kann mir das mal erklären?
    dank euch
    monsterherz
     
  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
    Aus

    Code:
    while ["$value"!="ende"];
    mach

    Code:
    while [ "$value" != "ende" ];
    Die Leerzeichen sind wichtig. Das ; markiert einen Zeilenumbruch und ist an dieser Stelle überflüssig, fehlerhaft ist es aber nicht.
     
  4. #3 phrenicus, 15.06.2006
    phrenicus

    phrenicus Routinier

    Dabei seit:
    24.05.2006
    Beiträge:
    253
    Zustimmungen:
    0
    Ort:
    Tübingen, Germany
    Hallo,

    so geht's wohl:

    Code:
    #!/bin/bash
    value=""
    while [ "$value" != "ende" ] ;
    do 
        clear
        echo "benutzer: zeigt eingeloggten user"
        echo "prozesse: zeigt laufende prozesse"
        echo "ende: beendet das script"
        echo "Ihre Auswahl:"
        read value
        if [ "$value" = "benutzer" ]; 
        then
            who
        elif [ "$value" = "prozesse" ];
        then
            ps
        elif [ "$value" = "ende" ];
        then
            echo 'ahoi'
        else 
            echo "keine unterstützung"
        fi
        echo "bitte enter drücken"
        read garbage
    done
    
    Gib Dir selbst eine Chance, Deine Skripte zu verstehen und menschenlesbar zu halten und verwende Einrückungen.
    Und gib der Shell eine Chance, die Variablen von ihren Werten zu unterscheiden und verwende Leerzeichen.

    Gruß
     
  5. #4 monsterherz, 15.06.2006
    monsterherz

    monsterherz Grünschnabel

    Dabei seit:
    20.08.2003
    Beiträge:
    4
    Zustimmungen:
    0
    Ort:
    kuhkaff in der Pfalz
    dank euch. Alles klar.
    @phrenicus
    Die Schreibweise kommt sicher im Laufe der Zeit. Da hat jeder sein eigenes Ding. Wie der ewige Streit : vi oder emacs... ;)

    aber hier noch was anderes:

    er führt immer #ps aus, egal welches value ich wähle:

    Code:
    benutzer: zeigt eingeloggten user
    prozesse: zeigt laufende prozesse
    ende: beendet das script
    Ihre Auswahl:
    benutzer
    root     tty1         2006-06-15 15:04
    michi    tty2         2006-06-15 15:04
    michi    pts/0        2006-06-15 15:04 (:0.0)
    michi    pts/1        2006-06-15 19:14 (:0.0)
    bitte enter drücken
    

    wieso denn das jetzt? :think:
     
  6. Xanti

    Xanti Mouse Organist

    Dabei seit:
    05.09.2004
    Beiträge:
    1.855
    Zustimmungen:
    0
    Er führt doch who aus.

    Gruss, Xanti
     
  7. #6 monsterherz, 15.06.2006
    monsterherz

    monsterherz Grünschnabel

    Dabei seit:
    20.08.2003
    Beiträge:
    4
    Zustimmungen:
    0
    Ort:
    kuhkaff in der Pfalz
    o.k. : ich halt den Schnabel...
    er führt immer who aus. :devil:
    Code:
    benutzer: zeigt eingeloggten user
    prozesse: zeigt laufende prozesse
    ende: beendet das script
    Ihre Auswahl:
    prozesse
    root     tty1         2006-06-15 15:04
    michi    tty2         2006-06-15 15:04
    michi    pts/0        2006-06-15 15:04 (:0.0)
    michi    pts/1        2006-06-15 21:45 (:0.0)
    bitte enter drücken
    
    benutzer: zeigt eingeloggten user
    prozesse: zeigt laufende prozesse
    ende: beendet das script
    Ihre Auswahl:
    ende
    root     tty1         2006-06-15 15:04
    michi    tty2         2006-06-15 15:04
    michi    pts/0        2006-06-15 15:04 (:0.0)
    michi    pts/1        2006-06-15 21:45 (:0.0)
    bitte enter drücken
    
    
    Wieder Verständnisfrage meinerseits? Oder stimmt was nicht?
     
  8. Xanti

    Xanti Mouse Organist

    Dabei seit:
    05.09.2004
    Beiträge:
    1.855
    Zustimmungen:
    0
    Code:
    benutzer: zeigt eingeloggten user
    prozesse: zeigt laufende prozesse
    ende: beendet das script
    Ihre Auswahl:
    prozesse
      PID  TT  STAT      TIME COMMAND
      668  p0  Ss     0:00.06 /usr/local/bin/bash
     5603  p0  R+     0:00.00 ps
    bitte enter drücken
    
    benutzer: zeigt eingeloggten user
    prozesse: zeigt laufende prozesse
    ende: beendet das script
    Ihre Auswahl:
    ende
    ahoi
    bitte enter drücken
    
    
    Hab den überarbeiten Code von phrenicus genommen. Funktioniert normal.

    Gruss, Xanti
     
  9. #8 phrenicus, 15.06.2006
    phrenicus

    phrenicus Routinier

    Dabei seit:
    24.05.2006
    Beiträge:
    253
    Zustimmungen:
    0
    Ort:
    Tübingen, Germany
    monsterherz:

    Bei mir nicht:

    Ich habe das Skript so per Cut&Paste übernommen, wie ich es gepostet habe.

    Gruß.......
     
  10. #9 Bikerpete, 22.06.2006
    Bikerpete

    Bikerpete Grünschnabel

    Dabei seit:
    23.01.2006
    Beiträge:
    1
    Zustimmungen:
    0
    Bei mir gehts bestens - hab auch das Script von phrenicus übernommen.
     
  11. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  12. #10 supersucker, 22.06.2006
    supersucker

    supersucker Foren Gott

    Dabei seit:
    21.02.2005
    Beiträge:
    3.873
    Zustimmungen:
    0
    @Monsterherz:

    Bei Auswahlmöglichkeiten sieht ein case-Konstrukt IMHO wesentlich schöner aus als diese unleserlichen if(bla == blub) then....
     
  13. #11 Schlaubi_fi.de, 22.06.2006
    Schlaubi_fi.de

    Schlaubi_fi.de Mac OS X User

    Dabei seit:
    22.12.2004
    Beiträge:
    304
    Zustimmungen:
    0
    Da muss ich dir zustimmen!
     
Thema:

Fehler im Script (while-Schleife)

Die Seite wird geladen...

Fehler im Script (while-Schleife) - Ähnliche Themen

  1. Perlscripts funktioniert nur bei Fehler!

    Perlscripts funktioniert nur bei Fehler!: Hallo, ich habe hier so ein ungewöhnliches Problem, dass mir noch nicht einmal ein sinnvoller Titel einfällt. Also folgendes, ein Perl Script...
  2. Gleicher Befehl über Script -> Fehler?

    Gleicher Befehl über Script -> Fehler?: Hallo, mein Name ist Michael und ich bin als zukünftiger Admin in die IT-Branche gekommen ;) Aktuell bin ich noch in der Startphase und beim...
  3. Denkfehler, oder was? iptables Script-Problem

    Denkfehler, oder was? iptables Script-Problem: Hi Leute, Ich möchte gern einen Rechner mit ner Firewall schützen. Ich selbst möchte aber alle Port nach aussen offen haben. Führe ich das...
  4. Compiler fehler bei ghostscript 8.64

    Compiler fehler bei ghostscript 8.64: ./obj/echogs -a ./obj/ldt.tr -s - -ldl -lm -lstdc++ -lfontconfig -lpthread -lm if [ x != x ]; then LD_RUN_PATH=; export LD_RUN_PATH; fi; \...
  5. Downloadscript bringt "komische" Fehlermeldung

    Downloadscript bringt "komische" Fehlermeldung: [GELÖST] Downloadscript bringt "komische" Fehlermeldung Hallo Ich habe mir ein Script geschrieben, welches Regelmäßig bestimmte Daten von...