¿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}
Respuestas
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
@librosweb
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.
@victormisavigo