ubuntuusers.de

Variable in FOR Schleife

Status: Gelöst | Ubuntu-Version: Kein Ubuntu
Antworten |

gog01

Anmeldungsdatum:
25. Juli 2020

Beiträge: Zähle...

Hallo,

mit der folgenden for Schleife habe ich das Problem das die Variable nicht richtig erkannt wird.

1
2
for i in {1..$nquelle}
do

Fehler: Zeile 81: {1..995}: Syntax Fehler: Operator erwartet. (Fehlerverursachendes Zeichen ist \"{1..995}\").

Wenn ich die Variable direkt eingebe läuft es.

Variable wird mit:

1
nquelle=$(wc -w /tmp/quelle.list | cut -d " " -f 1)

muss ich noch Klammern oder Anführungszeichen setzen?

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17625

Wohnort: Berlin

Das Problem kenne ich, und so schade wie es ist, es geht nicht, wegen der Auswertungsreihenfolge der Konstrukte in der Bash, ein langer Abschnitt i.d. Manpage, der sich nicht einfach so wegliest.

1
2
for i in $(seq 1 $nquelle) 
do

Ist der Weg drumrum, was den Aufruf eines externen Programms (seq) involviert.

gog01

(Themenstarter)

Anmeldungsdatum:
25. Juli 2020

Beiträge: 2

Danke das war es.

Ich hatte es tatsächlich schon gelesen aber keine Ahnung warum ich es nicht getestet habe, war irgendwie in das range verbissen.

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13225

In der bash könnte dies bei großen Zahlenbereichen effizienter sein, weil dann nicht eine lange Liste generiert werden muss:

1
2
3
for ((i=1; i <= nquelle; ++i)); do
  echo $i
done

Und dann geht natürlich auch immer (selbst in der sh):

1
2
3
4
5
6
i=1

while [ $i -le $nquelle]; do
  echo $i
  i=$((i + 1))
done
Antworten |