Anweisungen innerhalb Until-Schleife

S

skriptchen

Grünschnabel
Erst einmal Hallo! Ich bin nämlich neu hier. :baby:
Und brauche auch schon gleich Hilfe!

Im Skript

Code:
i=1
echo $i
until i=10
do
echo $i
i=$(( $i + 1 ))
done
echo $i

wird die echo-Anweisung innerhalb der Schleife nicht ausgeführt. i wird aber hochgezählt. (Schätze also, die Schleife selbst wird ausgeführt.)

Ich erhalte:
schaaf@herde:/weide# sh ./Skript
1
10
schaaf@herde:/weide#

Kann mir das jemand erklären, bitte? :hilfe:

Schon einmal Danke und einen Gruß aus der Lüneburger Heide
 
Hi,

der Ausdruck "i=10" in deiner "until"-Bedingung ist immer true - damit wird der Wert von i auf 10 gesetzt, die Schleife aber nicht ausgeführt. Verwende stattdessen etwa "until $i -eq 10" oder "until $i = 10".

Gruss, A.
 
Danke für den Hinweis.

Scheint aber noch nicht richtig zu funktionieren. Beide Versionen zählen i in einer Endlosschleife weiter hoch.

Irgendwas scheint noch nicht zu stimmen.
 
Mit
Code:
i=1
echo $i
until [ $i = 10 ]
do
        echo $i
        i=$(( $i + 1 ))
done
echo $i
bekomme ich
Code:
1
1
2
3
4
5
6
7
8
9
10
...
 
Hallo floyd62,

ich hatte die Klammern nicht gesetzt ( until [ ]).

Danke
 

Ähnliche Themen

Skript soll nicht doppelt laufen... kill pkill pid cron

Shell Skript beschleunigen

HandbrakeCLI Shell Skript

continue in Schleife einbauen

Shellskript - Fehler in Cron

Zurück
Oben