다음과 같은 스크립트를 실행하고 있습니다.
while IFS=$'\r' read -r line || [[ -n "$line" ]]; do
something
done < "$1"
기본적으로 텍스트 파일(예: $1
)을 읽고 각 줄에 대해 "무언가를 수행"합니다.
텍스트 파일에는 20줄이 있습니다. 스크립트가 실행되어 10행에서 실행될 때 행(21행)을 추가하여 지금 텍스트 파일을 수정하면 나중에 21행에서 실행됩니까?
즉, 스크립트는 텍스트 파일을 어떻게 읽습니까? 전체 파일을 처음부터 한 번에 읽나요, 아니면 필요한 경우 한 줄씩 읽나요?
답변1
전체 파일을 한 번에 메모리로 읽는 대신 한 번에 한 줄씩 읽는 것처럼 보입니다. 나는 당신을 위해 작은 테스트를 만들었습니다:
3줄을 포함하는 파일을 만듭니다.
$ echo -e "Line 1\nLine 2\nLine 3" >> teslines.txt
$ cat testlines.txt
Line 1
Line 2
Line 3
다음과 같은 작은 스크립트를 작성하십시오.
#!/bin/bash
while read LINE; do
echo "$LINE"
sleep 2
done < testlines.txt
스크립트를 실행하고 새 줄 추가를 시작합니다.
$ ./readlinetest.sh
Line 1
# Somewhere around here i started adding more lines to the file:
$ echo "Line 4" >> testlines.txt
$ echo "Line 5" >> testlines.txt
$ echo "Line 6" >> testlines.txt
$ echo "Line 7" >> testlines.txt
# Output continued:
Line 2
Line 3
Line 4
Line 5
Line 6
Line 7
tail -f
일부 라이브 로그에서 실행하는 것과 매우 유사하게 작동합니다 .