Почему этот скрипт зацикливается на первой строке файла 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" 

с этим скриптом я хочу grep против файла журнала каждый пользователь в файле имени пользователя. В настоящее время скрипт перебирает первое имя пользователя снова и снова. Мне нужно, чтобы он остановился после прохождения всех файлов в каталоге журнала и переместился к следующему имени в списке.

2 Solutions collect form web for “Почему этот скрипт зацикливается на первой строке файла txt?”

Есть два места, где вы вводите «$ usernameFile»: один в глобальном цикле, другой – в read.

 while read -r line < $usernameFile; do done < "$usernameFile" 

вы должны вводить его только в глобальном цикле, я думаю. (Другими словами, только положите его после «done»).

 cat "$usernameFile" | while read line; do if [[ "$line" != " " ]]; then zgrep -w "$line" "$logFile"* >> grep_output.txt fi done 
  • Заменить значения в файле
  • Найти файл, проверить размер и перезаписать, когда размер файла отличается
  • как совместить слова и игнорировать пробелы
  • Работает в командной строке, но не в сценарии оболочки
  • Переменная bash с кавычками и процентами
  • Как изменить сортировку результата из grep -rc
  • Поиск данных из всех файлов в папке
  • Почему это «while kill -0 $ PID», а не «до kill -0 $ PID»?
  • Присоедините два файла в пакетном режиме
  • Если условие не работает в скрипте над ssh
  • case + как реализовать равный или меньше или больше в случае синтаксиса
  • Interesting Posts

    Как я могу создать цикл for, запускающий множество процессов?

    Как изменить право собственности на символические ссылки?

    Как просмотреть список ранее выполненных запросов MySQL в формате live feed?

    Беспроводной сервер позволяет только одному клиенту

    Как скрыть файлы от Bash?

    Apache, групповые разрешения и загрузки пользователей

    Используя инструмент командной строки cURL на Mac, как можно получить данные запаса, которые возвращаются * без * запятых?

    Возвращаясь к команде, я частично написал

    soundblast live on linx mint: фатальный: модуль snd-emu10k1 не найден

    удаление странных символов из приглашения zsh

    Bash: Назначение переменной не похоже на «stick»

    Когда я планирую команду с 'at', могу ли я изменить, куда отправляется вывод?

    Мониторинг температуры / IO привода NVMe

    ОШИБКА: Не удалось создать собственное расширение gem на Arch (postgresql)

    Компилятор C не может создавать исполняемые файлы

    Linux и Unix - лучшая ОС в мире.