Shell Programmierung Hilfe bei while Schleife

Hinweis: In dem Thema Shell Programmierung Hilfe bei while Schleife gibt es 4 Antworten. Der letzte Beitrag () befindet sich ganz unten auf dieser Seite.
  • Hallo,


    ich bin absoluter Anfänger in Sachen Bash - Programmierung. Ich kann zwar C aber mit den Schleifen der Bash Programmierung habe ich große Probleme.


    Hier mal der bisherige Code:



    Das Programm bleibt bei dem cat Befehl stehen.


    Hier noch die Ausgabe:


    Code
    linux-u98m:/home/chris/Schreibtisch # ./Usart.sh
    Bereit
    Hallo, Araduino.


    Kann jemand helfen?

    Kaum macht man´s richtig, schon geht´s.

    Für den Inhalt des Beitrages 108114 haftet ausdrücklich der jeweilige Autor: griwl

  • Wenn man in einer Schleife liest,
    dann liest man halt in einer Schleife.


    Und hat man keine Abbruchbedingung,
    dann liest das Ding halt ewig,
    oder wartet bis etwas gelesen werden kann.


    Das solltest du aber längst wissen.
    Das ist in C nicht anders.


    Es wäre wohl besser für die Kommunikation mit dem Teil eigene FDs zu verwenden.
    Also sowas wie  exec 3>/dev/ttyUSB0 ; exec 4</dev/ttyUSB0

  • Vielen Dank für deine Bemühungen.


    Also vielleicht habe ich mich nicht richtig ausgedrückt.
    Ich bin totaler Anfänger in Bash Programmierung und habe da schon anfängliche Probleme mit der
    Schreibweise der Schleifen. Dass eine while Schleife eine Abbruchbedingung hat, weiß ich schon.


    Bei der ersten while Schleife kann ich die Abbruchbedingung erkennen.


    Code
    "$myarray" != "Bereit"


    Führe die Schleife aus, solange myarray nicht den Wert Bereit hat.


    bei der nächsten while Schleife sehe ich die Abbruchbedingung leider nicht. Sorry - mein Fehler....


    Das Ding hier soll nur solange ausgeführt werden, solange myarray nicht den Wert Bereit hat.

    Code
    while read myarray; do
            echo $myarray
            if [ "$myarray" == "Bereit" ]
                then
                    echo "Hallo, Araduino."
                else
                    echo "Warte auf Arduino..."
            fi
        done < <(cat /dev/ttyUSB0)

    Kann mir jemand eine Buchempfehlung für Bash Programmierung geben?
    Vielen Dank für Eure hlfe.

    Kaum macht man´s richtig, schon geht´s.

    Für den Inhalt des Beitrages 108136 haftet ausdrücklich der jeweilige Autor: griwl

  • Nu ja.


    Er bleibt halt bis der Strom ausgeht in der zweiten Schleife, WEIL dort nichts abgebrochen wird.
    Du könntest in der inneren while Schleife im Then Zweig ein break verweden, um aus dieser Ewigkeit wieder auszubrechen.


    Hilfe zu internen Bash Kommandos erhältst du mit


    Manche Befehle gibt es extern und shellintern. Auf manchen Maschinen sind test und eigenständige Kommandos, auf manchen dasgleiche Binärprogramm, lediglich miteinander verlinkt. UND die Bash bringt ein interne Variante ebenfalls mit.
    Also nicht nur help something sondern auch immer gleich man something probieren.


    Eine einige Runde Klammer ist die Anweisung, die darin stehenden Befehle in einer Subshell auszuführen.
    Zwei runde Klammern sind der arithmetische Kontext.




    Ein paar gute Links zu einigen guten Seiten habe ich wohl,
    aber noch etwas viel besseres:
    Ich kann dir das leicht in ein paar Stunden live beibringen.
    Sauerland und ich haben einen Server, der nicht nur Mumble anbietet. (Mumble == bessere open source Variante wie Teamspeak)
    Installiere dir Mumble und gehe auf den Server computer.krauttranslate.de
    Dann zeige ich dir das in einer gesharten screen- session.
    Mit Sicherheit effizienter als alles andere.

  • Kaum macht mans richtig, schon gehts... :)


    Danke für die ausführliche Hilfe. Die man oder help Seiten benutze ich oft für Befehle wie grep, ls, oder für Programme ( stty, motion, etc ).
    Wäre nie darauf gekommen man while einzugeben.. ;-O


    Ich lerne am Besten mit Hands On. An einem eigenen Projekt, das man vorantreiben möchte. Das Live Coatching hört sich
    echt sau gut an. Ich werde in meinem nächsten Urlaub mal darauf zurückgreifen. Das Forum wird auf jeden Fall mit einer Spende unterstützt.

    Kaum macht man´s richtig, schon geht´s.

    Für den Inhalt des Beitrages 108143 haftet ausdrücklich der jeweilige Autor: griwl