2015-11-08 60 views
0

看起来像尾随'\n'字符被修剪为"$()",,而我从bash manual找不到关于此的任何规范。这真的让人困惑,任何人都可以帮我解释一下吗?

[[email protected]_6_207_centos ~]$ a="$(echo $'abc\n\n' | cat)" 
[[email protected]_6_207_centos ~]$ echo "$a" 
abc 
[[email protected]_6_207_centos ~]$ a="$(echo $'abc\n\nb' | cat)" 
[[email protected]_6_207_centos ~]$ echo "$a" 
abc 

b 
[[email protected]_6_207_centos ~]$ a=$'abc\n' 
[[email protected]_6_207_centos ~]$ echo "$a" 
abc 

[[email protected]_6_207_centos ~]$ a="$(echo $'abc ' | cat)" 
[[email protected]_6_207_centos ~]$ echo "$a" | url_encode 
abc%20%20%0A[[email protected]_6_207_centos ~]$ 

回答

0

好,我刚发现从manual

击执行由执行命令和与该命令,with any trailing newlines deleted. Embedded newlines are not deleted的标准输出替换 命令替换膨胀的解释,但是它们 可以在分词期间被删除。命令替换$(cat 文件)可以被替换为等效但更快的$(<文件)。