나는 이전에 약간의 스크립트 작업을 하고 있었는데 설명할 수 없는 것을 발견했습니다.
이 명령을 실행하세요
(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'을 공백으로 생각한 적이 없습니다.