1

bash / shell: while Schleifen

Frage von simi5995 simi5995
Hi, ich will so ne while schleife machen, wo dann rechts am rand (grün) done steht oder so, ich hab ne einfache whileschleife gemacht, aber da stehts nich:
!/bin/sh

i=1 while [ $i -le 5 ] do echo $i i=expr $i + 1

done

also da sind noch Absätze, die schreibs aber nich mit. Betriebssystem: Linux 2.6.27.45-0.1-pae i686 System: openSUSE 11.1 (i586) KDE: 4.1.3 (KDE 4.1.3) "release 4.11.1"

Fragen zu gleichen Themen finden

Antworten (3)

  • 1
    Hilfreichste Antwort ausgezeichnet vom Fragesteller
    Antwort von EA7SEC EA7SEC
    Hallööle...

    while Bedingung ; do

       Anweisung
    

    done


    Eine Schleife mit WHILE endet mit DO !! Ohne DO wird nix.. Immer auf den Syntax achten!

    Die Bedingung wird am Schleifenanfang geprüft und nicht am Ende. Bei while wird die Schleife solange ausgeführt, wie die Bedingung wahr ist. Dann gibt es noch until , wo die Schleife solange ausgeführt wird wie die Bedingung unwahr, also falsch ist.

    Kommentar von simi5995 simi5995

    Ne Bedingung ist ja z.B: ifstatus dsl0, aber weitere fallen mir jetzt auch nicht ein, was sind denn jetzt noch solche Bedingungen? Ich hab's auch schon mit "normalen" Variablen gemacht also mit read und habe dann in einer anderen Konsole die Variable verändert, ging aber nicht (also er hat immer weiter gemacht)

    Kommentar von PsychoPate PsychoPatePsychoPate

    in einer anderen shell die variable verändern bringt nichts, da der fork() nur das globale shell-environment mitbekommt. bedingungen sind z.b. test $c=='A' oder test $d -eq 4...usw. als bedingung kann aber im prinzip jedes kommando genutzt werden, welches einen rückgabewert besizt

    Kommentar von EA7SEC EA7SECEA7SEC

    Hallo, eine sogenannte "Bedingung" in einer WHILE/DO Schleife ist eigentlich eine Liste mit ausgeführten Anweisungen. Der Exit-Status der letzten Anweisung wird als Wert der Bedingung benutzt. z.B. while ! cp $1 $2; do echo "Kopiervorgang daneben gegangen. Warten.." sleep 5 done Hier besteht die Bedingung aus dem cp-Befehl zum Dateien kopieren. Geht dieses Kommando in die Hose gib es den Exit-Code ungleich 0 zurück. Dadurch wird als Anweisung dann der echo-Befehl zur Ausgabe des Textes ausgeführt. Danach wird 5sec gewartet. Eigentlich handelt es sich hier um eine UNTIL-Schleife, denn der Operator ! mach aus einer WHILE eine UNTIL... Ansonsten wie von Anderen hier schon beschrieben...

    Kommentar von simi5995 simi5995

    Boahh, Danke, ich bin voll Happy, des mit dem sleep brauchte ich schon, keine Ahnung wie lange!! Danke!

  • 1
    Antwort von oldguy54 oldguy54
    !/bin/bash

    i=1 while [ $i -le 5 ] do echo $i i=$(expr $i + 1) done

    mit bash geht i=$(expr $i + 1 )
    mit sh geht nur i='expr $ i + 1 '
    bash hat noch andere Möglichkeiten, das ist aber
    nicht Thema
    ' ist das Zeichen neben ? aber mit shift
  • 0
    Antwort von SteinMain SteinMain

    aso mal C, für richtige männer:

    for (i = 1; i <= 5; i++) {}

    oder aber:

    i= 0 while(i<=5) { } do

    (beschissener stil !!!!)

    oder basic: $i

    for i=1 endfor

    Kommentar von simi5995 simi5995

    ich brauchs aber in bash

    Kommentar von SteinMain SteinMain

    in was ? gibts da n manual ?

    Kommentar von PsychoPate PsychoPatePsychoPate

    es gibt in der bash auch eine for-Schleife! die forschleife für deine aufgabe wäre wie folgt:

    "#!/bin/bash

    for x in seq 1 5

    do
    
         [DAS WAS IN DER FOR-SCHLEIFE PASSIEREN SOLL]
    
    done
    

    exit 0"

    Kommentar von PsychoPate PsychoPatePsychoPate

    sorry, das "seq 1 5" muss natürlich mit dem zeichen links vom ? eingefasst werden (das aber mit shift schreiben, damit es das ` ergibt)

Diese Frage

Verwandte Fragen

Noch nicht den richtigen Rat gefunden?

Einfach und schnell viele hilfreiche Ratschläge von Deutschlands aktivster Ratgeber-Community erhalten!

Einfach und schnell einen Tipp erstellen und Ihren guten Rat mit anderen teilen!

Einfach und schnell ein Video hochladen und anschaulichen Rat an alle geben!

Die unter gutefrage.net angebotenen Dienste und Ratgeber Inhalte werden nicht geprüft. Die Richtigkeit der Inhalte wird nicht gewährleistet. Rechtliche Hinweise finden Sie hier.