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; }
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?
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; }
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
Tags bash