为什么此变量中不存在空(^ $)行?

时间:2012-08-28 19:26:59

标签: bash sed

$ cat temp.txt
hello, world!





$ cat temp.txt | sed -n '1,4p'
hello, world!



$ ret=$(cat temp.txt | sed -n '1,4p')
$ echo "$ret"
hello, world!
$

我想知道为什么$ ret变量没有空行。

非常感谢您的帮助。

2 个答案:

答案 0 :(得分:4)

从bash手册页(强调我的):

  

Bash通过执行命令并用>替换命令替换来执行扩展。命令的标准输出,包含任何尾随换行符   删除即可。嵌入的换行符不会被删除,但可能会在word中删除   分裂。命令替换$(cat文件)可以替换为等效的但是   更快$(< file)。

答案 1 :(得分:-1)

解析echo "$ret"会在确定echo的实际参数时跳过空格。玩这样的事情可以更好地理解:

x=$(echo '   foo    ')
echo "x${x}x"
echo ${x}
echo "${x}"