Se você usar
echo "$(cat input.txt)"
funcionará corretamente.
Provavelmente a entrada do echo é separada por novas linhas, e ele será tratado como comandos separados, então o resultado será sem novas linhas.
Se eu tiver o arquivo input.txt
contendo:
hello
world
!
Em seguida, executar o comando bash echo $(cat input.txt)
exibirá isso:
hello world !
Por que e como posso corrigi-lo para mostrar exatamente o que está no arquivo como está no arquivo?
Se você usar
echo "$(cat input.txt)"
funcionará corretamente.
Provavelmente a entrada do echo é separada por novas linhas, e ele será tratado como comandos separados, então o resultado será sem novas linhas.
Citado na página de manual do bash, seção Command Substitution
:
As novas linhas incorporadas não são eliminadas, mas podem ser removidas durante divisão de palavras.
Um pouco mais, mesma seção:
Se a substituição aparecer entre aspas duplas, divisão de palavras e a expansão do nome do caminho não é executada os resultados.
É por isso que echo "$(cat /etc/passwd)"
funciona
Tags scripts