Come posso iterare su un intervallo di numeri definiti da variabili in Bash?

Come posso iterare su un intervallo di numeri in Bash quando l'intervallo è dato da una variabile?

So che posso farlo (chiamato "espressione di sequenza" nella documentazione di Bash):

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

Che dà:

1
; 2
;

3
4
5

Eppure, come posso sostituire uno dei punti finali dell'intervallo con una variabile? Questo non funziona:

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

Che stampa:

{1..5}

Soluzione

per i in $(seq 1 $END); do echo $i; done/pre>;

edit: preferisco seq rispetto agli altri metodi perché posso effettivamente ricordarlo ;)

Commentari (11)

Puoi usare

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

Questo funziona bene in bash:

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