Часть скрипта, который я пишу, должна проверять различные текстовые файлы для одних и тех же строк. Прежде чем я просто должен был проверить один файл, чтобы у меня был длинный список строк в категиях для поиска, которые определены как переменные. Позже в скрипте variabled вызываются и выводятся на экран, если есть совпадение:Возможно ли передать несколько команд в оператор 'if'?
category_1=$(sudo zcat myfile | egrep -c 'Event 1|Event 2|Event 3')
category_2=$(sudo zcat myfile | egrep -c 'Event 4|Event 5|Event 6')
category_3=$(sudo zcat myfile | egrep -c 'Event 7|Event 8|Event 9')
...
echo Category 1
if [[ $category_1 -ge 2 ]];then
echo There were $category_1 events
elif [[ $category_1 -eq 1 ]]; then
echo There was $category_1 event
fi
и т.д., и т.д ...
Теперь мне нужно изменить его так, что я могу проверить grepped строки против нескольких текстовых файлов. Я пытался определить новые файлы как переменные и трубы их в заявлении, если с переменной Grep но безрезультатно:
category_1=$(egrep -c 'Event 1|Event 2|Event 3')
category_2=$(egrep -c 'Event 4|Event 5|Event 6')
category_3=$(egrep -c 'Event 7|Event 8|Event 9')
myfile=$(sudo zcat myfile)
myfile2=$(sudo zcat myfile2)
myfile3=$(sudo zcat myfile3)
...
echo Category 1 - Myfile
if [[ myfile | $category_1 -ge 2 ]];then
echo There were $category_1 events in myfile
elif [[ myfile | $category_1 -eq 1 ]]; then
echo There was $category_1 event in myfile
fi
кажется, что я не могу команды трубы в, если заявление.
Можно чтобы команда «egrep» была установлена как переменная, так что мне не нужно ставить «Событие 1» и т. д. в каждой команде? Так что это было бы больше похоже на grepvariable1 = $ egrep -c 'Событие 1 | Событие 2 | Событие 3'if [[$ (sudo zcat myfile1 | grepvariable1) -ge 2]]; затем – Hxwk
@Hxwk: вы можете определить функцию, содержащую код, который вы хотите повторить. – choroba
Спасибо за то, что указали мне в правильном направлении, я рассмотрю функции – Hxwk