For-loops (Bash): verschil tussen versies

Uit De Vliegende Brigade
Naar navigatie springen Naar zoeken springen
Regel 78: Regel 78:
  
 
<pre>
 
<pre>
for i in `seq 0 2 10`; do echo $i; done
+
$ for i in `seq 0 2 10`; do echo $i; done
 +
 
 +
0
 +
2
 +
4
 +
6
 +
8
 +
10
 
</pre>
 
</pre>
  

Versie van 12 okt 2022 17:04

Er zijn verschillende manieren om een for-loop te doen. Een bloemlezing:

Ranges

Gebruik van een for-loop met een range:

declare -A tr
#
tr[1,1]="Eén";	tr[1,2]="Jeden"
tr[2,1]="Twee";	tr[2,2]="Dwa"

for i in {1..2}
do
   echo ${tr[$i,1]}" - " ${tr[$i,2]}
done

Dit werkt prima met een vaste range, maar niet met een variabele range. Dit werkt bv. niet:

START=1
END=5
for i in {$START..$END}
do
   echo "$i"
done

Three-parameter loops - C-style loops

Three-parameter loops oftewel C-style loops kunnen een oplossing zijn voor bv. range-loops met variabele range:

Het for-keyword kent drie argumenten:

  1. Startwaarde
  2. Conditie
  3. Waardeverandering.

Voorbeeld:

i=1
for ((i; i<=10; i++))
do
   echo $i
done

Uitvoer:

1
2
3
4
5
6
7
8
9
10

Maw.: De increment vindt plaats na de loop.

Ander voorbeeld:

((i=0; < $number_of_threads; i++))
do
   ...
done

Step

Er is een step-functionaliteit. Bv.:

$ for i in `seq 0 2 10`; do echo $i; done

0
2
4
6
8
10

Zie ook