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