Bash

為什麼在引用 subshel l 並將結果傳遞給 echo 的末尾沒有新行?

  • May 17, 2015

當我做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

我的問題是,第二個換行符在哪裡(一個應該來自 grep,一個來自 echo)?

那是來自的換行符echo,您可以通過使用echo -n來抑制尾隨換行符來驗證:

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

命令替換刪除所有尾隨換行符,最後一個換行符由添加echogrep這裡無關。

引用自:https://unix.stackexchange.com/questions/203935