Bash
為什麼在引用 subshel l 並將結果傳遞給 echo 的末尾沒有新行?
當我做
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)?
那是來自的換行符
echo
,您可以通過使用echo -n
來抑制尾隨換行符來驗證:echo -n "$(ls | grep png)"
命令替換刪除所有尾隨換行符,最後一個換行符由添加
echo
,grep
這裡無關。