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
어떻게 될까요?