Bash,对 echo $variable 感到好奇

6 bash quoting

早些时候我正在编写一个小脚本,并注意到一些我无法解释的东西。

运行这个命令

(time wget --spider http://www.google.co.uk/) 2>&1  | egrep 'real|response'
Run Code Online (Sandbox Code Playgroud)

给我这个输出(我期望)

HTTP request sent, awaiting response... 200 OK
real    0m0.086s
Run Code Online (Sandbox Code Playgroud)

我在一个变量中捕获上面的输出

Result=$((time wget --spider http://www.google.co.uk/) 2>&1  | egrep 'real|response')
Run Code Online (Sandbox Code Playgroud)

如果我

echo "$Result"   
Run Code Online (Sandbox Code Playgroud)

我得到了预期的输出

HTTP request sent, awaiting response... 200 OK
real    0m0.086s
Run Code Online (Sandbox Code Playgroud)

但是如果我

echo $Result
Run Code Online (Sandbox Code Playgroud)

我得到

HTTP request sent, awaiting response... 200 OK real    0m0.086s
Run Code Online (Sandbox Code Playgroud)

这是为什么 ?

Ada*_*tek 11

echo $Result命令将变量的值转换为多个参数用于 echo,在任何空白处拆分,并且 echo 打印所有由空格分隔的参数。另一方面,echo "$Result"将整个字符串(包括空格)放入第一个也是唯一的 echo 参数中,该参数直接打印。