이 스크립트가 txt 파일의 첫 번째 줄에서 반복되는 이유는 무엇입니까?

이 스크립트가 txt 파일의 첫 번째 줄에서 반복되는 이유는 무엇입니까?
#!/bin/bash
usernameFile="/home/netadmin/username_list.txt"

logFile="/var/log/netvpn-mag-archive/netvpn-mag-20160"

  while read -r line < $usernameFile; do
    if [[ "$line" != " " ]]; then
            zgrep -w "$line" "$logFile"* >> grep_output.txt
    fi
  done < "$usernameFile"

이 스크립트를 사용하여 사용자 이름 파일에 있는 각 사용자의 로그 파일을 수집하고 싶습니다. 현재 스크립트는 첫 번째 사용자 이름을 계속해서 반복하고 있습니다. 로그 파일 디렉터리의 모든 파일을 검색한 후 중지하고 목록의 다음 이름으로 이동해야 합니다.

답변1

"$usernameFile"을 입력할 수 있는 위치는 두 군데가 있습니다. 하나는 전역 루프에 있고 다른 하나는 읽기에 있습니다.

while read -r line < $usernameFile; do

done < "$usernameFile"

전역 루프에만 입력해야 한다고 생각합니다. (즉, "완료" 뒤에 넣으면 됩니다.)

답변2

cat "$usernameFile" | while read line;
do
   if [[ "$line" != " " ]]; then
     zgrep -w "$line" "$logFile"* >> grep_output.txt
   fi
done

관련 정보