Я пытаюсь создать небольшую программу для подсчета количества строк в наборе файлов журнала на основе определенного пользователем временного интервала. В настоящее время я нахожусь на последнем этапе и из-за по какой-то причине, когда я запускаю программу, она не работает с ошибкой ниже 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
Оболочка распознает метасимвол |
в самом начале синтаксического анализа. При раскрытии значения переменной уже слишком поздно, поэтому |
ведет себя как буквальная вертикальная полоса, т.е. как если бы вы выполнили
grep 'ived>20161215110' summary_* \| wc -l
. Вы можете использовать функцию вместо переменной.