Dlaczego nie ma nowego wiersza na końcu cytowania podpowłoki i przekazywania wyników do echa?

9

Kiedy robię, ls | grep pngwyjście grep jest:

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

(nazwa pliku, nowa linia, nazwa pliku, nowa linia)

następnie echo $(ls | grep png)wyjścia:

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

(nazwa pliku, spacja z dzielenia słów, nazwa pliku, nowa linia !! z echa !!)

Wszystko jest w porządku, ale kiedy to zrobię, aby zapobiec dzieleniu wyrazów: echo "$(ls | grep png)"wynikiem jest:

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

A moje pytanie brzmi: gdzie jest druga nowa linia (jedna powinna być z grepa, a druga z echa)?

MichalH
źródło

Odpowiedzi:

8

To jest nowa linia od echo, którą możesz zweryfikować za pomocą, echo -naby ukryć końcową linię nowej linii:

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

Podstawienie polecenia usuwa wszystkie końcowe znaki nowej linii, ostatnia nowa linia została dodana przez echo, grepnie ma tu nic do roboty.

Cuonglm
źródło
„Podstawianie poleceń usuwa wszystkie końcowe znaki nowej linii” - to wszystko! Dziękuję
MichalH