Grep внутри пока л oop bash - PullRequest
0 голосов
/ 04 мая 2020

Я пытаюсь получить некоторую информацию из каталога для каждой строки в файле. Я использую пока l oop, чтобы grep каждой строки файла. Один grep работает отлично. Я проверил свой while l oop с помощью echo, и он отлично работает, но когда я использую grep внутри, он не выдает результатов.

while IFS= read -r LINE; do
grep --include=\requests-definition.const.ts -rnwH $DIR -e "$LINE";
echo $LINE;
done < key_list

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

Спасибо!

Ответы [ 2 ]

0 голосов
/ 05 мая 2020

проблема была решена путем удаления специальных символов из списка ключей с помощью команды dos2 unix.

0 голосов
/ 04 мая 2020

Убедитесь, что l oop не выходит из первой строки без совпадения.

От grep Man

ВЫХОДНОЙ СТАТУС

  Normally  the  exit status is 0 if a line is selected, 1 if no lines were selected, and 2 if
   an error occurred.  However, if the -q or  --quiet  or  --silent  is  used  and  a  line  is
   selected, the exit status is 0 even if an error occurred.

Для выхода из вас есть несколько способов go:

  1. Использовать подоболочку с $ (grep ...)
  2. , использовать флаг + e
    while IFS= read -r LINE; do

    set +x # don't exit if exit code is different from 0
    grep --include=\requests-definition.const.ts -rnwH $DIR -e "$LINE";
    set -e # exit if exit code is different from 0

    echo $LINE;
    done < key_list
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...