![while 루프에서 "done < file"은 어떻게 작동하나요?](https://linux55.com/image/217160/while%20%EB%A3%A8%ED%94%84%EC%97%90%EC%84%9C%20%22done%20%26lt%3B%20file%22%EC%9D%80%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%EC%9E%91%EB%8F%99%ED%95%98%EB%82%98%EC%9A%94%3F.png)
Bash에서 파일 내용을 조작하는 방법을 배우던 중 다음 코드 예제를 발견했습니다.
while IFS=, read -r col1 col2
do
echo "I got:$col1|$col2"
done < myfile.csv
~에 따르면Open Group 기본 사양 6호:
읽기 유틸리티는 표준 입력에서 한 줄을 읽어야 합니다.
read
내 이해가 정확하다면 이는 예를 들어 에서 줄을 읽으 려면 명령 끝에 다음 myfile.csv
을 추가해야 함 을 의미합니다 .< myfile.csv
read
read -r col1 col2 < myfiles.csv
그러나 첨부된 코드에서는 키워드 뒤에 가 < myfile.csv
추가됩니다 . done
왜 그런 겁니까?
답변1
이 예에서 리디렉션의 목적을 위해 while 루프(조건부 포함)의 모든 항목에 대한 표준 입력은 다음과 같습니다.myfile.csv
제안한 대로 리디렉션할 수 있지만 읽을 호출마다 리디렉션이 개별적으로 설정되고 매번 첫 번째 줄만 읽혀집니다.