Variáveis Execução no bash

0

Estou tentando trabalhar alguns scripts de bash por conta própria.

Digamos que eu queira adicionar "hi" no começo das linhas, como

a="find . -type f"

$ for i in $a;do echo hi $i; done

mas a saída é:

hi find
hi .
hi -type
hi f

Eu gostaria de colocar todo início de execução variável como saída de arquivo, que é aqui, "oi" como posso fazer isso?

EDIT: eu quero adicionar oi a muito fron de "a" variáveis de saída, mas este script adicionando oi cada linha de um ..

EDIT: para o tipo -f para -type f, obrigado @Terrance

pode ser produzido;

hi ./me
hi ./you

desculpem a pergunta não clara que espero poder editar o trabalho ...

    
por solfish 03.08.2017 / 15:28

1 resposta

1

Seu for loop trata o $a como uma string e não o executará.

Use $(command) quando precisar executar algo dentro de outro comando.

Então, o que você faria no seu caso é (por favor, não faça isso, mas siga a dica abaixo):

for i in $($a); do echo hi $i; done

Dica adicional: Evite usar um loop for com a saída find, pois você terá problemas quando os nomes dos arquivos contiverem espaços.

No seu caso, o seguinte funcionará:

a="find . -type f"
while IFS= read -r i; do
    echo "hi $i"
done < <($a)

<(command) cria um arquivo temporário da saída do comando.

    
por RoVo 03.08.2017 / 15:39