While Schleife

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von fsking, 24.04.2008.

  1. fsking

    fsking Eroberer

    Dabei seit:
    05.09.2007
    Beiträge:
    59
    Zustimmungen:
    0
    Ort:
    BL
    Hi,
    ich bin gerade dabei etwas bash zu lerne, ich versuche gerade eine while schleife zu testen, leider bekomme ich sie nicht zum funktionieren, hier erstmal der code:
    Code:
    #!/bin/bash
    test=3;
    ende=6;
    while [ $test -gt 2 ]; do
    echo "das ist ein test"
    counter=1;
    let "counter += 1"
    if [ counter -a ende ]; then
    	let "test=1";
    fi
    done;
    ich hab mir das so geacht, die while schleife läuft solange ducrh, bis die Variable counter auf sechs ist, dei variable wird ja bei jedem durchlauf um eins erhöht, leider läuft die schleife nur einmal ducrh, und dann ist schluss!

    jemand ne ahnung, was ich daran verändern muss?

    vielen dank schonmal im vorraus!

    lg,
    fsking
     
  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. #2 bytepool, 24.04.2008
    Zuletzt bearbeitet: 24.04.2008
    bytepool

    bytepool Code Monkey

    Dabei seit:
    12.07.2003
    Beiträge:
    791
    Zustimmungen:
    0
    Ort:
    /home/sweden/göteborg
    Hi,

    ist nicht das was du hier willst. Ich denke du willst:
    Code:
    if [ counter -eq ende ];
    
    Die Option -a steht fuer "and", d.h. du testest ob die Ausdruecke '3' und '6' wahr sind, was der Fall ist, weil keiner davon 0 ist. Ergo wird beim ersten Durchlauf test auf 1 gesetzt, und die Schleife wird abgebrochen.

    edit:
    Mhh, if [ 0 ]; ist auch ein wahrer Ausdruck, keine Ahnung warum. Also vergiss das mit der 0, aber der Rest sollte stimmen. ;)

    mfg,
    bytepool
     
  4. fsking

    fsking Eroberer

    Dabei seit:
    05.09.2007
    Beiträge:
    59
    Zustimmungen:
    0
    Ort:
    BL
    @bytepool: vielen dank! das funktioniert, musste den code auch so noch etwas umstellen, damit es klappt! wo bekommt ich denn diese abkürzungen wie -eq und -gt her? im Advanced Bash-Scripting Guide habe ich bis jetzt keine Erklärungen dazu gefunden, kann aber auch sein, ich habs einfach überlsen!

    lg,
    fsking
     
  5. #4 bytepool, 24.04.2008
    bytepool

    bytepool Code Monkey

    Dabei seit:
    12.07.2003
    Beiträge:
    791
    Zustimmungen:
    0
    Ort:
    /home/sweden/göteborg
    'man bash' und 'man test' ;)

    mfg,
    bytepool
     
  6. #5 fsking, 24.04.2008
    Zuletzt bearbeitet: 24.04.2008
    fsking

    fsking Eroberer

    Dabei seit:
    05.09.2007
    Beiträge:
    59
    Zustimmungen:
    0
    Ort:
    BL
    man bash war klar, aber man test kannte ich bis jetzt noch nicht!

    vielen dank!

    lg,
    fabi

    EDIT:
    jetzt hab ich noch ne frage, und zwar ist es nicht möglich if else anweisungen zu verschachteln?
    ich bekomme immer eine Fehlermeldung, wenn ich zweimal else verwende, ich weiß das switch+case sauberer ist, würde aber trotzdem gerne wissen, wie das funktioniert, hier der Code :
    Code:
    #!/bin/bash
    test=3;
    ende=6;
    counter=1;
    
    while [ "$test" -gt 2 ]; do
    echo "das ist ein test"
    let "counter += 1"
    if [ "$counter" -eq "$ende" ]; then
    	let "test=1";
    	if [$test -eq 1]; then
    		echo "was los?"
    	fi
    	else
    		echo"Nix!"
    	fi
    else
    	echo "Test ist noch nicht vorbei!"
    fi
    done;
    Ich erhalte diese Meldung:
     
  7. #6 Wolfgang, 25.04.2008
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo

    Es gibt bei if nur ein else.
    Hier der Auszug der Manpage zur bash
    Gruß Wolfgang
     
  8. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
Thema:

While Schleife

Die Seite wird geladen...

While Schleife - Ähnliche Themen

  1. do-while Schleife

    do-while Schleife: Hi, Ich sehe bei Bash immer nur: while [ Bedingung ]; do Aktion done Gibt es auch eine umgekehrte Schleife? Also do...
  2. Per while-Schleife, SSh Verbindung aufbauen ( Nach 1 Server bricht er ab .. )

    Per while-Schleife, SSh Verbindung aufbauen ( Nach 1 Server bricht er ab .. ): Hallo, ich möchte mir per Script nacheinander an mehreren Servern anmelden und dort einen Befehl ausführen. ---------- #!/bin/sh while read...
  3. Wert aus While Schleife

    Wert aus While Schleife: Hallo zusammen, habt Ihr eine Idee wie ich $l (rot markiert) mit korrekten Inhalt in die B Schleife runter bekomme? Vielen Dank im Voraus...
  4. remsh in while Schleife

    remsh in while Schleife: Hallo, ich lese mir aus einer Datei verschiedene Rechnernamen aus, es soll anschließend beim jeweiligen Rechner ein Befehl ausgeführt werden....
  5. Fehler im Script (while-Schleife)

    Fehler im Script (while-Schleife): halli,hallo ich studiere gerade ein Buch unter anderem über Scripting. Habe ein Beispiel-Script angelegt. Ausführbar gemacht: #!/bin/bash...