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)?

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.


"Substituição de comando remove todas as novas linhas finais" - é isso! Obrigado
MichalH
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.