2011-12-22 4 views
3

를 내장 '읽기',이 작품 :후행 줄 바꿈과 배시에서

echo -n $'a\nb\nc\n' | while read x; do echo = $x =; done 

그동안 세 번

= a = 
= b = 
= c = 

그러나 기존이없는 텍스트 파일을 상상을 통해 루프 후행 줄 바꿈. 나는 read이 여전히 모든 세 줄에서 작동해야한다고 생각하지만 그렇지 않습니다. 난 그냥 얻을 :

echo -n $'a\nb\nc' | while read x; do echo = $x =; done 

= a = 
= b = 

배쉬의 help read 정말 명확하지 않습니다.

참고 :이 문제는 해결할 필요가 없으며 직접 해결할 수있는 방법이 있습니다. 나는 궁금해서 버그 리포트를 보내고 싶다. 나는 일반적으로 새 줄이없는 파일을 존중하려고한다. 읽을 때 -d 옵션을 사용할 때이 문제가 발생했습니다. read -d " "은 줄 바꿈 대신에 공백으로 나뉘지만 뒤 공백이 없으면 마지막 항목에서 생략됩니다. How to define "One line" :

(. 우분투 GNU bash는 버전 4.1.5 (1) -release)

+0

가치가있는 경우 두 번째 스크립트는 ksh로 첫 번째 스크립트로 작동합니다. 행운을 빕니다. – shellter

답변

1
$ man bash 
    read [-ers] [-a aname] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [name ...] 
      One line is read from the standard input, ... 

나는 키가 생각합니다.
text without a '\n' at the endOne line이됩니까?
나는 read 그렇게 생각하지 않는다고 생각합니다.

+1

내 텍스트 편집기는 그것이 선이라고 생각하고 모든 텍스트 편집기가 가능할 것이라고 생각합니다. 따라서 텍스트 편집기가 개행 문자가없는 파일을 현명하게 처리 할 수 ​​있다면'read'도 역시 그렇게해야한다고 생각합니다 :-) –

관련 문제