Bash、echo $variableについて質問します。

Bash、echo $variableについて質問します。

私は以前少しスクリプトをしていましたが、説明できないことがわかりました。

このコマンドを実行してください

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

私にこの出力を与えます(私が期待していたもの)

HTTP request sent, awaiting response... 200 OK
real    0m0.086s

上記の出力を変数にキャプチャしました。

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

もし私が

echo "$Result"   

期待した結果を得ました。

HTTP request sent, awaiting response... 200 OK
real    0m0.086s

しかし、もし私が

echo $Result

わかりました。

HTTP request sent, awaiting response... 200 OK real    0m0.086s

なぜそんなことですか?

答え1

このecho $Resultコマンドは変数値をエコーの複数の引数に変換し、スペースに分割し、エコーはスペースで区切られたすべての引数を出力します。一方、echo "$Result"文字列全体(スペースを含む)は、直接印刷される最初の唯一のechoパラメータに入力されます。

答え2

Adamの答えは、スペースに関連する正しい方向を教えてくれます。より具体的には、\n2行の間のスペースはスペースとして解釈され、使用中は単一のスペースに変換されますが、使用中は$Resultスペースのままです。\n"$Result"

私は以前「\n」を空白と考えたことがありません。

関連情報