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