Não é possível canalizar de echo para bash leitura interna? [duplicado]

1

Digamos que eu tenha um loop que passa por um arquivo linha por linha via read . Eu gostaria de ter tanto a linha original, quanto a linha dividida em diferentes variáveis, que read faz muito bem. No entanto, parece que não consigo fazer o eco de uma variável, canalizá-la para read e ter as variáveis preenchidas. Aqui está um caso básico:

echo "a b c d e f g" | read line
echo "Read obtained: $line"

O resultado:

Read obtained:

Como posso fazer a leitura fazer o que eu quero? Ou: Por que estou errado em pedir que leia para fazer isso, e o que devo fazer em vez disso?

    
por Matthew Curry 09.09.2017 / 05:42

2 respostas

1

Você pode informar read de leitura do pipeline da seguinte maneira; Resposta original do @yardena no SO

echo "a b c d e f g" | { read line; echo line=$line; }
    
por 09.09.2017 / 06:02
0

o problema é o escopo. a variável não tem valor fora do subshell criado pelo pipe. Em vez disso:

while read line; do echo "read obtained: ${line}"; done < <(echo "a b c d e f g")

use um loop como quiser. Se você quiser processar o texto com um, faça isso. -C

    
por 09.09.2017 / 05:57

Tags