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