Por que não há uma nova linha no final de citar um subshell e passar os resultados para ecoar?

9

Quando eu faço ls | grep pnga saída do grep é:

2015-05-15-200203_1920x1080_scrot.png 
2015-05-16-025536_1920x1080_scrot.png

(nome do arquivo, nova linha, nome do arquivo, nova linha)

então, echo $(ls | grep png)produz:

2015-05-15-200203_1920x1080_scrot.png 2015-05-16-025536_1920x1080_scrot.png

(nome do arquivo, espaço da divisão de palavras, nome do arquivo, nova linha !! do eco !!)

Tudo bem, mas quando faço isso para impedir a divisão da palavra:, echo "$(ls | grep png)"a saída é:

2015-05-15-200203_1920x1080_scrot.png 
2015-05-16-025536_1920x1080_scrot.png

E minha pergunta é: onde está a segunda nova linha (uma deve ser do grep e a outra do eco)?

MichalH
fonte

Respostas:

8

É a nova linha de echo, você pode verificar usando echo -npara suprimir a nova linha à direita:

echo -n "$(ls | grep png)"

A substituição de comandos remove todas as novas linhas finais, a última nova linha foi adicionada por echoe grepnão tem nada a fazer aqui.

cuonglm
fonte
"Substituição de comando remove todas as novas linhas finais" - é isso! Obrigado
MichalH