Почему нет новой строки в конце цитирования подоболочки и передачи результатов в echo?

9

Когда я делаю ls | grep pngвывод grep:

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

(Имя файла, символ новой строки, имя файла, символ новой строки)

затем echo $(ls | grep png)выводит:

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

(имя файла, пробел от разделения слов, имя файла, перевод строки !! из эха !!)

Это все нормально, но когда я делаю это, чтобы предотвратить разбиение слов:, echo "$(ls | grep png)"вывод:

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

И мой вопрос: где находится второй символ новой строки (один должен быть из grep, а другой из echo)?

MichalH
источник

Ответы:

8

Это новая строка echo, которую вы можете проверить с помощью echo -nподавления завершающей новой строки:

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

Подстановка команд удаляет все завершающие символы новой строки, последняя новая строка была добавлена echo, grepздесь делать нечего.

cuonglm
источник
«Подстановка команд удаляет все завершающие символы новой строки» - вот и все! Спасибо
MichalH