O problema não é echo
, é o shell.
Tente usar aspas duplas:
echo "$flist" | grep myfile.txt
Deve funcionar bem.
Existe uma maneira (simples) de alimentar variáveis com fim de linha para outro programa em BASH? Considere o exemplo:
flist=$(ls -l)
echo $flist
echo
substituirá todos os finais de linha por espaços, então minha saída será diferente do conteúdo da variável. Outro exemplo:
echo $flist | grep myfile.txt
Este comando não funcionará como esperado para gerar apenas informações sobre myfile.txt
. Como faço para imprimir a linha que contém myfile.txt
.
Aqui está uma solução:
cat << EOF | grep myfile.txt
$flist
EOF
Qualquer coisa menos feia?