• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[gelöst] Schleife mit Variablenwert als Bedingung ausf.

scummos

Hacker
Hallo,

ich möchte eine Schleife schreiben, die eine bestimmte Befehlsfolge solange ausführt, bis meine Variable einen bestimmten Wert erreicht hat. Das habe ich aber bisher nicht hinbekommen... kann mir jemand helfen?

Code:
#!/bin/sh
declare -i a
a=1
for [a < 10]
do
//befehle
a=a+1
done
war aber nicht der einzige Versuch... ich habe eine menge verschiedene sachen versucht, erhielt aber immer folgenden Error:
(das script ist anders, daher stimmt die zeile nicht)
x.sh: line 7: syntax error near unexpected token `<'
oder
x.sh: line 7: 10: Datei oder Verzeichnis nicht gefunden

Würde mich sehr freuen wenn da jemdand die (sicher einfache) Lösung parat hätte =)

Viele Grüße

scummos
 

mr_kaktus

Member
Dann denke ich, dass er beim hochzählen der Variable "a" ein Problem bekommt ! Im der Shell funkt es nicht so wie bei C, man brauch ein extra Prog wie "expr"
Code:
a=`expr $a + 1`

Warum nihmst du nicht einfach die bash? Ist um einiges besser und einfacher als sh, wobei bei suse wird so oder so bash verwendet.
 
Eleganter wäre
Code:
#!/bin/sh

LIMIT=10

for ((i=1; i < LIMIT ; i++)); do
  echo -n "$i";
  # oder irgendein befehl;
done;

# EOF
 

mr_kaktus

Member
@b3ll3roph0n
Angeber :lol:

Du könnte das auch in einer while schleife lösen
Code:
a=1

while [ $a -lt 10 ]
do
  echo $a
  a=`expr $a + 1`
done
 

oc2pus

Ultimate Guru
und hier noch ein Link, auch mit der Lösung für gesuchtes Problem:

http://io.khm.de/~alex/HGKZ/4q/Shell.html
 
OP
S

scummos

Hacker
mr_kaktus schrieb:
Dann denke ich, dass er beim hochzählen der Variable "a" ein Problem bekommt ! Im der Shell funkt es nicht so wie bei C, man brauch ein extra Prog wie "expr"
Code:
a=`expr $a + 1`
anscheinend nicht (mehr):
Code:
sven@linux-xkc5:~> declare -i zahl
sven@linux-xkc5:~> zahl=1
sven@linux-xkc5:~> echo $zahl
1
sven@linux-xkc5:~> zahl=zahl+1
sven@linux-xkc5:~> echo $zahl
2
sven@linux-xkc5:~>

/e nach rumprobieren: aber im scipt braucht mans :)

danke, b3ll3roph0n, deine Methode funktioniert prima und reicht mir völlig =)
danke an die anderen, werde das beizeiten auch alles ausprobieren, will ja schließlich was lernen ^^

viele grüße, scum
 
Oben