我正在编写的脚本的一部分需要检查相同字符串的各种文本文件。在我只需要检查一个文件之前,我需要在cateogies中有很长的字符串列表来查找哪些被定义为变量。后来在脚本中的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的变量if语句来定义新的文件作为变量,管他们无济于事:
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
看来,我可以在一个if语句不是管的命令。
是否有可能将'egrep'命令设置为一个变量,以便我不必在每个命令中放置'Event 1'等等。所以它更像 grepvariable1 = $ egrep -c'Event 1 | Event 2 | Event 3'if [[$(sudo zcat myfile1 | grepvariable1)-ge 2]];然后 – Hxwk
@Hxwk:你可以定义一个包含你想要重复的代码的函数。 – choroba
感谢您指引我朝着正确的方向发展,我会研究功能 – Hxwk