Hvordan itererer jeg over et talområde, der er defineret af variabler i Bash?

Hvordan itererer jeg over et talinterval i Bash, når intervallet er angivet ved hjælp af en variabel?

Jeg ved, at jeg kan gøre dette (kaldet "sequence expression" i Bash documentation):

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

Hvilket giver:

1
2
3
4
5

Men hvordan kan jeg erstatte en af range endpoints med en variabel? Dette virker ikke:

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

Hvilket udskriver:

{1..5}

Løsning
for i i i $(seq 1 $END); do echo $i; done

edit: Jeg foretrækker seq frem for de andre metoder, fordi jeg faktisk kan huske det ;)

Kommentarer (11)

Du kan bruge

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

Det fungerer fint i bash:

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