2011-11-27 3 views
4

read 행을 사용하여 파일에서 행을 읽는 while 루프가 있습니다. 그러면 줄이 비어 있는지 확인하고 싶습니다. 어떻게해야합니까? 공백이 있거나이 사이트의 변수에 관한 질문을 이미 발견했습니다. bash는 남자 페이지에서파일에서 한 행이 bash로 비어 있는지 확인하는 방법

[ -z "$line" ] 

:

답변

6

당신은 테스트를 사용할 수 있습니다

문자열의 길이가 0 인 경우

-z 문자열
사실. 문자열이 비어 있지 않은 경우

+1

오, shucks! 나를 때려! nice job – tekknolagi

1

-n 운영자 검사 : 당신은 공백을 포함하는 문자열을 제외 할 싶다면

while read line  
do 
    if [ -n "$line" ] 
     echo $line 
    fi 
done < file.txt 

, 당신은 배쉬의 패턴 교체 ${var//find/replacement}를 사용할 수 있습니다. 예 :

if -n [ "${line//[[:space:]]/}" ] 
+1

당신이'[-n "$ line"]'이라고 쓴다면, 나는 행복 할 것이다. 나는 '배시'가 당신이 쓴 것을 허용한다고 의심합니다. (다른 곳에서는 볼 수없는 논리를 이해할 수는 없지만) 나는 큰 따옴표없이 불편할만큼 충분히 오래된 학교입니다. Bourne과 - Korn과 같은 다른 관련 셸을 사용했다면 따옴표가없는 표기법은 작동하지 않습니다. –

+0

감사합니다, 재미있는, 전체 설명을 발견 [여기 4 번 지점] (http://mywiki.wooledge.org/BashPitfalls) – Andomar

관련 문제