¿Cómo puedo iterar por una secuencia de números definida por variables de bash?

¿Cómo puedo iterar por un rango numérico en un script de bash cuando el límite del rango está definido por el valor de una variable?

Según la documentación de Bash, es posible hacer esto:

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

El resultado del script anterior sería:

1
2
3
4
5

Pero lo que yo quiero hacer es que los límites del rango se puedan definir mediante variables. He intentado lo siguiente pero no me funciona bien:

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

El script anterior muestra como resultado lo siguiente:

{1..5}
Estás leyendo una traducción autorizada de la pregunta How do I iterate over a range of numbers defined by variables in bash? planteada por eschercycle en StackOverflow.

Respuestas

#1

Lo más sencillo es utilizar el método seq:

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

Si $END es un número muy grande, podrías optar por la siguiente solución alternativa que consume mucha menos memoria:

typeset -i i END # let's be explicit
for ((i=1;i<=END;++i)); do echo $i; done
#2

Muchas gracias, esto se podria utilizar para cadenas de numeros de primos? es que me gustaria usarlo para extraer listados de 10000 numeros, por que si no tendria que escribir uno a uno y es para mi web: (https://www.numeros-primos.com) y me vendria genial.