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의 대답은 공백과 관련된 올바른 방향을 알려줍니다. 보다 구체적으로 \n두 줄 사이의 공백은 공백으로 해석되어 사용 시 단일 공백으로 변환되지만 사용 시에는 $Result공백으로 유지됩니다 .\n"$Result"

나는 이전에 '\n'을 공백으로 생각한 적이 없습니다.

관련 정보