Comment itérer sur une plage de nombres définie par des variables dans Bash ?

Comment itérer sur une plage de nombres dans Bash lorsque la plage est donnée par une variable ?

Je sais que cela est possible (appelé "expression de séquence" dans la [documentation][1] de Bash) :

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

Ce qui donne :

1
2
3
4
5

Or, comment puis-je remplacer l'une ou l'autre des extrémités de l'intervalle par une variable ? Cela ne fonctionne pas :

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

Qui s'imprime :

{1..5}

[1] : http://www.gnu.org/software/bash/manual/bashref.html#Brace-Expansion

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

edit : Je préfère seq aux autres méthodes parce que je peux vraiment m'en souvenir ;)

Commentaires (11)

Vous pouvez utiliser

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

Cela fonctionne bien dans bash :

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