Выполнение команды Grep в цикле дает ошибку

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

Выполнение происходит в строке 6 в приведенном ниже коде. В строке 7 показан пример команды, которую я пытаюсь выполнить. Если я прокомментирую строку 6 и раскомментирую строку 7, она будет выполнена. Возможно, мне не хватает чего-то простого. Ценю вашу помощь. Значения этих переменных приведены ниже

fileName = "'summary_ * | wc -l" команда = "grep '" comm = ived> 20161215110

1 for (( z=0; z<($interval/10); z++ ))
2 do
3       comm=$tempCommand$count
4       let "count = $count + 1"                                
5       #echo "$command$comm$fileName"
6       totalCount=`$command$comm$fileName`
7       #totalCount=`grep 'ived>20161215110' summary_* | wc -l`
8       echo $totalCount
9 done
0
06.01.2019, 15:55
1 ответ

Оболочка распознает метасимвол | в самом начале синтаксического анализа. При раскрытии значения переменной уже слишком поздно, поэтому | ведет себя как буквальная вертикальная полоса, т.е. как если бы вы выполнили

grep 'ived>20161215110' summary_* \| wc -l

. Вы можете использовать функцию вместо переменной.

1
28.01.2020, 02:47

Теги

Похожие вопросы