Por que este script está em loop na primeira linha do arquivo txt?

1
#!/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"

com este script eu quero grep contra o arquivo de log todo usuário no usernamefile. Atualmente, o script está circulando pelo primeiro nome de usuário várias vezes. Eu preciso parar depois de passar por todos os arquivos no diretório logfile e passar para o próximo nome na lista.

    
por pdickson26 07.04.2016 / 20:53

2 respostas

6

Existem dois lugares onde você insere "$ usernameFile": um no loop global, o outro em leitura.

while read -r line < $usernameFile; do

done < "$usernameFile"

você deve inserir apenas em loop global, eu acho. (Em outras palavras, apenas coloque depois de "done").

    
por 07.04.2016 / 21:09
-1
cat "$usernameFile" | while read line;
do
   if [[ "$line" != " " ]]; then
     zgrep -w "$line" "$logFile"* >> grep_output.txt
   fi
done
    
por 07.04.2016 / 21:35