混淆bash“$()”然后换行符号

时间:2015-11-08 04:14:21

标签: bash

使用'\n'格式修剪尾随的"$()",字符,但我无法从bash manual找到有关此内容的任何规范。这真的令人困惑,任何人都可以帮我解释一下吗?

[roxma@VM_6_207_centos ~]$ a="$(echo $'abc\n\n' | cat)"
[roxma@VM_6_207_centos ~]$ echo "$a"
abc
[roxma@VM_6_207_centos ~]$ a="$(echo $'abc\n\nb' | cat)"
[roxma@VM_6_207_centos ~]$ echo "$a"
abc

b
[roxma@VM_6_207_centos ~]$ a=$'abc\n'
[roxma@VM_6_207_centos ~]$ echo "$a"
abc

[roxma@VM_6_207_centos ~]$ a="$(echo $'abc  ' | cat)"
[roxma@VM_6_207_centos ~]$ echo "$a" | url_encode
abc%20%20%0A[roxma@VM_6_207_centos ~]$

1 个答案:

答案 0 :(得分:0)

好吧,我刚刚从manual

找到了解释
  

Bash通过执行命令并替换来执行扩展   使用命令的标准输出with any trailing newlines deleted. Embedded newlines are not deleted替换命令,但是它们   可以在分词期间删除。命令替换$(cat   文件)可以用等效但更快的$(< file)替换。