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


9

ls | grep pnggrepの出力を行うと、次のようになります。

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

そして私の質問は、2番目の改行はどこにあるのか(1つはgrepから、もう1つはechoから)ですか?

回答:


8

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

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

コマンドの置換はすべての末尾の改行を削除します。最後の改行はによって追加されましたがechogrepここでは何もしません。


「コマンド置換により、末尾の改行がすべて削除されます」-これで完了です。ありがとう
MichalH
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.