$ 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变量没有空行。
非常感谢您的帮助。
答案 0 :(得分:4)
从bash手册页(强调我的):
Bash通过执行命令并用>替换命令替换来执行扩展。命令的标准输出,包含任何尾随换行符 删除即可。嵌入的换行符不会被删除,但可能会在word中删除 分裂。命令替换$(cat文件)可以替换为等效的但是 更快$(< file)。
答案 1 :(得分:-1)
解析echo "$ret"
会在确定echo
的实际参数时跳过空格。玩这样的事情可以更好地理解:
x=$(echo ' foo ')
echo "x${x}x"
echo ${x}
echo "${x}"