while 루프에서 "done < file"은 어떻게 작동하나요?

while 루프에서 "done < file"은 어떻게 작동하나요?

Bash에서 파일 내용을 조작하는 방법을 배우던 중 다음 코드 예제를 발견했습니다.

while IFS=, read -r col1 col2
do
    echo "I got:$col1|$col2"
done < myfile.csv

~에 따르면Open Group 기본 사양 6호:

읽기 유틸리티는 표준 입력에서 한 줄을 읽어야 합니다.

read내 이해가 정확하다면 이는 예를 들어 에서 줄을 읽으 려면 명령 끝에 다음 myfile.csv을 추가해야 함 을 의미합니다 .< myfile.csvread

read -r col1 col2 < myfiles.csv

그러나 첨부된 코드에서는 키워드 뒤에 가 < myfile.csv추가됩니다 . done왜 그런 겁니까?

답변1

이 예에서 리디렉션의 목적을 위해 while 루프(조건부 포함)의 모든 항목에 대한 표준 입력은 다음과 같습니다.myfile.csv

제안한 대로 리디렉션할 수 있지만 읽을 호출마다 리디렉션이 개별적으로 설정되고 매번 첫 번째 줄만 읽혀집니다.

관련 정보