Como iterar em um intervalo de números no Bash quando o intervalo é fornecido por uma variável?
Eu sei que posso fazer isso (chamado "expressão de sequência" na documentação do Bash ):
for i in {1..5}; do echo $i; done
Que dá:
1
2
3
4
5
No entanto, como posso substituir qualquer um dos pontos de extremidade do intervalo por uma variável? Isso não funciona:
END=5
for i in {1..$END}; do echo $i; done
Que imprime:
{1..5}
for i in {01..10}; do echo $i; done
daria números como 01, 02, 03, ..., 10
.
myarray=('a' 'b' 'c'); for i in ${!myarray[@]}; do echo $i; done
(observe o ponto de exclamação). É mais específico que a pergunta original, mas pode ajudar. Veja expansões de parâmetros do bash
{jpg,png,gif}
que não são abordadas diretamente aqui, embora a resposta seja idêntica. Veja expansão Brace com variável? [duplicado], que está marcado como duplicado deste.