为什么在引用子shell并将结果传递给echo的末尾没有换行?


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开始!)

没关系,但是当我这样做以防止单词split:时echo "$(ls | grep png)",输出为:

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

我的问题是,第二个换行符在哪里(一个应该来自grep,另一个应该来自echo)?

Answers:


8

这是的换行符echo,您可以使用echo -n禁止尾随换行符来进行验证:

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

命令替换会删除所有尾随的换行符,最后一个换行符是由所添加的echogrep与此处无关。


“命令替换删除所有结尾的换行符”-就这样!谢谢
MichalH 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.