Hoe itereer ik over een reeks getallen gedefinieerd door variabelen in Bash?

Hoe itereer ik over een reeks getallen in Bash wanneer het bereik wordt gegeven door een variabele?

Ik weet dat ik dit kan doen (het heet "sequence expression" in de Bash documentatie):

 for i in {1..5}; do echo $i; done

Dat geeft:

1
2
3
4
5

Maar hoe kan ik een van de eindpunten van het bereik vervangen door een variabele? Dit werkt niet:

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

Dat drukt af:

{1..5}

Oplossing
for i in $(seq 1 $END); do echo $i; done

edit: ik verkies seq boven de andere methodes omdat ik het kan onthouden ;)

Commentaren (11)

U kunt gebruik maken van

for i in $(seq $END); do echo $i; done
Commentaren (8)

Dit werkt prima in bash:

END=5
i=1 ; while [[ $i -le $END ]] ; do
    echo $i
    ((i = i + 1))
done
Commentaren (7)