Bash 正则表达式的问题

Bash 正则表达式的问题,bash,shell,solaris,Bash,Shell,Solaris,我编写了一个脚本,它只在半小时内轮询日志文件条目,如果发现错误,则发送电子邮件。我已计划每半小时在crontab中运行一次该脚本 下面是脚本。但是这个脚本没有按照我想要的那样工作。例如,如果它在上午11:30运行,它应该在上午11:00:00到11:30:00之间扫描日志。相反,它也在扫描文件的“00:00”或“30:00”。我想,我在应用正则表达式时犯了一些错误,有人能帮忙吗 blogs=/opt/docs/datapower/prod/business.log slogs=/opt/docs

我编写了一个脚本,它只在半小时内轮询日志文件条目,如果发现错误,则发送电子邮件。我已计划每半小时在crontab中运行一次该脚本

下面是脚本。但是这个脚本没有按照我想要的那样工作。例如,如果它在上午11:30运行,它应该在上午11:00:00到11:30:00之间扫描日志。相反,它也在扫描文件的“00:00”或“30:00”。我想,我在应用正则表达式时犯了一些错误,有人能帮忙吗

blogs=/opt/docs/datapower/prod/business.log
slogs=/opt/docs/datapower/prod/system.log


starttime=$(date +'%H')
currmin=$(date +'%M')
curdate=`date|cut -d' ' -f5`
echo $(date)

if [ $currmin -le 29 ] && [ $starttime -ne 00 ] ; then
starttime1=`echo "$(date +'%H') - 1" | bc`
logtime="$starttime1"
logtime="$logtime:[3-5][0-9]"
echo $logtime



elif [ $currmin -le 29 ] && [ $starttime -eq 00 ] ; then
logtime="23:[3-5][0-9]"
echo $logtime



else
logtime="$starttime"
logtime="$logtime:[0-2][0-9]"
echo $logtime

fi

if ( grep "$logtime" $slogs | egrep "AAA Authentication Failure|AAA Authorization Failure") > dptest 2>&1;then

       Do something

fi 
下面是示例日志条目

Nov 20 06:06:58 business-log-sta [DP-Domain-STAGING][0x80000001][business-log][info] mpgw(GenServiceMPG): trans(31513092)[request]: AAA Authentication failure/>

您的代码在我的系统上运行,我遇到的唯一问题是,“AAA身份验证失败”在您的代码中用大写字母“F”编写,在日志文件中用小写字母“F”编写

您也可以通过更改以下行来减少代码

logtime="$starttime1"
logtime="$logtime:[3-5][0-9]"
logtime=“$starttime1:[3-5][0-9]”


编辑:如果您需要,我可以提供在我的系统上运行的脚本的示例输出。

这里可能重复我们正在搜索模式
hh:mm
,我们可以搜索模式
hh:mm:ss
吗?以及如何搜索?为什么您要这样做,您在所需的时间间隔内获取所有文件,不是吗?您可以将
:[0-5][0-9]
添加到变量中,但这将导致相同的输出。我想我不太明白你的问题。