サブシェルを引用して結果をエコーに渡す最後に改行文字がないのはなぜですか?

サブシェルを引用して結果をエコーに渡す最後に改行文字がないのはなぜですか?

grepを実行すると、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

(ファイル名、単語分割スペース、ファイル名、改行文字!! From echo!!)

大丈夫です。ただし、単語の分離を防ぐために、これを行うとecho "$(ls | grep png)"結果は次のようになります。

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

私の質問は2番目の改行文字(1つはgrepで、1つはechoから取得する必要があります)はどこですか?

答え1

これはから来る改行ですecho。以下をecho -n使用して、末尾の改行を抑制してこれを確認できます。

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

コマンドの置き換えすべての末尾の改行文字を削除します。最後の改行文字はによって追加され、echoここではgrep関係ありません。

関連情報