Почему этот скрипт зацикливается на первой строке файла 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 
  • тип ksh с укрытием
  • Запуск программы и выполнение команды в скрипте bash
  • Как я могу безопасно получить версию ksh?
  • Как отключить, как часто передаются строки вывода?
  • Обновление файлов конфигурации в скрипте, который ссылается на них?
  • Как эта команда find использует «find ... -exec sh -c» ... «sh {} +» работает?
  • Как играть простые заметки, такие как звук ding-dang в терминале
  • Источник Bash - выберите правильную функцию, когда два источника файлов имеют одинаковое имя функции?
  • сохранить дубликаты из $ PATH на источнике
  • Удалите тишину из аудиофайлов, оставляя пробелы
  • Катить все файлы в папке, включая имя файла, используя цикл for?
  • Interesting Posts

    Как явным образом и безопасно принудительно использовать встроенную команду в bash

    Как определить и преобразовать текущее время в течение нескольких секунд, прошедших в течение текущего дня?

    Настройка ssh отпечатков пальцев на dns для замены known_hosts не выполняется

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

    Сообщение об ошибке на несуществующем домашнем каталоге (настройки pam.d / *)

    Замените все пробелы запятыми в текстовом файле

    mdadm.conf: устройства UUID, повторно подключаемый к другому кабелю, например

    Как отключить определенный интерфейс (dhclient) из resolvconf?

    Туннели с тем же номером порта

    Чувствительность восприятия мыши

    find: отсутствующий аргумент для «-ok»

    Как остановить прокрутку от изменения рабочих областей в i3 на CrunchBang ++?

    Получить ярлык файла устройства хранения раздела Linux

    Дублировать записи PATH – не знаю, где они установлены из

    Поиск всех разделов с файловыми системами

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