2
$ 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 变量没有空行。

非常感谢您的帮助。

4

2 回答 2

4

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

Bash 通过执行命令并将命令替换替换为 > 命令的标准输出来执行扩展,并删除任何尾随的换行符。嵌入的换行符不会被删除,但它们可能会在分词过程中被删除。命令替换 $(cat file) 可以替换为等效但更快的 $(< file)。

于 2012-08-28T19:33:34.017 回答
-1

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

x=$(echo '   foo    ')
echo "x${x}x"
echo ${x}
echo "${x}"
于 2012-08-28T19:35:59.873 回答