Por que o bash remove \ n in $ (arquivo cat)?

18

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?

    
por f.ardelian 14.04.2012 / 03:58

2 respostas

22

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.

    
por arian 14.04.2012 / 04:10
0

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

    
por Sergiy Kolodyazhnyy 06.04.2016 / 18:16

Tags