읽기 내장의 REPLY 변수가 공백을 건너뛰는 이유는 무엇입니까?

읽기 내장의 REPLY 변수가 공백을 건너뛰는 이유는 무엇입니까?
echo "     a" | while read; do echo "$REPLY"; done

선행 공백을 포함하는 ".....a"를 출력합니다. 하지만,

echo "     a" | while read line; do echo "$line"; done

선행 공백을 건너뛰고 "a"를 출력합니다(단어 분리로 인해).

REPLY 변수는 IFS를 null로 설정하는 것과 동일한 효과를 갖는 것으로 보입니다.

echo "     a" | while IFS= read line; do echo "$line"; done

bash 매뉴얼에서 이유를 찾을 수 없습니다. 어떤 생각이 있나요? 감사해요.

답변1

~에서read 매뉴얼 페이지:

표준 입력(또는 파일)에서 한 줄을 읽고 할당성격)변수 이름.

이름이 제공되지 않은 경우,철사읽기는 변수에 할당됩니다회신하다.

그래서 $REPLY항상 전체철사, 할당된 변수는 항상성격. 그렇지 않으면 작동하지 않습니다. 예를 들어 여러 단어가 있는 경우에는 $REPLY어떻게 될까요?

관련 정보