Expandindo uma cadeia de expansão de chave mantida em uma variável para uso em um loop for?

2

Eu tenho o seguinte script:

FOOS=foo{1..5}
for i in 'echo $FOOS' do
echo bar
done

Agora eu (acho que) tenho a idéia de que a expansão de chave só funciona com literais - daí o eco - mas tudo isso parece fazer é imprimir apenas um bar no console. Por que (a expansão de strings / chaves não está funcionando)?

O que eu esperaria que acontecesse é:

  1. Atribua a string ( foo{1..5} ) representando uma expansão para a variável FOOS
  2. substitua $FOOS , então basicamente eu tenho      for i in 'echo foo{1..5}' do (parece que não posso escapar de carrapatos aqui)
  3. execute o echo, agora tenho for i in foo1 foo2 foo3 foo4 foo5 do
  4. execute for, imprimindo bar cinco vezes para a saída do console
  5. Não obtém apenas um bar impresso na tela como a única saída: -)
por Christian 27.10.2015 / 19:27

1 resposta

2

1.

FOO=$(echo foo{1..5})

mas é melhor usar uma matriz

FOO=(foo{1..5})

2.

echo ${FOO[*]}

4.

for i in {1..5}
do
    echo bar
done

ou

for i in $(seq 5)
do
    echo bar
done
    
por 27.10.2015 / 20:14