2013-07-29 2 views
1

명령 출력의 첫 번째 줄을 읽으 려합니다. 하지만 나는 빈 메시지를 받는다. 라인 변수가 비어 어떻게 그 문제를 해결하기 위해 왜"read"가 명령 출력의 첫 번째 행을 읽지 않는 이유는 무엇입니까?

나는

ls | read line 
echo $line #nothing displayed 

를 사용?

다음 코드가 작동합니다. 이 읽기 가능 아니라면하지만 난 그것을 grep와 같은 다른 기능을 할 수 있으며, 첫 번째 라인을

ls | while read line; do 
    echo $line 
done 

을 읽을 수, AWK, 나오지?

+5

'ls'을 (를) 구문 분석하지 마십시오. 'for line in *;을 사용하십시오. do '를 사용하여 파일을 반복합니다. – chepner

답변

4

read은 첫 번째 행을 읽지 만 서브 쉘에서는 실행 중입니다. 하지만 당신은 할 수 있습니다 :

ls | { read line; 
    echo $line; 
    # other commands using $line; 
} 
# After the braces, $line is whatever it was before the braces. 
2

당신은

read line <<< "$(ls)" 
printf "%s\n" "$line" 

를 사용할 수 있지만 이미, 제발, 제발 언급, ls 출력을 구문 분석하지 마십시오!