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