このスクリプトが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」と入力できる場所は2つあります。 1つはグローバルループにあり、もう1つは読み取りにあります。

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

関連情報