How do I iterate over a range of numbers defined by variables in Bash?

eschercycle picture eschercycle · Oct 4, 2008 · Viewed 1.2M times · Source

How do I iterate over a range of numbers in Bash when the range is given by a variable?

I know I can do this (called "sequence expression" in the Bash documentation):

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

Which gives:

1
2
3
4
5

Yet, how can I replace either of the range endpoints with a variable? This doesn't work:

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

Which prints:

{1..5}

Answer

Jiaaro picture Jiaaro · Oct 4, 2008
for i in $(seq 1 $END); do echo $i; done

edit: I prefer seq over the other methods because I can actually remember it ;)