JMSState_file 是一个文件,下面的第一个语句从中取出JMS_Pending_Count的数目,echo $JMSPENDINGCNT 可以
看到是一个数字。 但是在 if [$JMSPENDINGCNT -gt 100] 部分居然报错, 提示 Command not found, 排错了很久才参考其他脚本知道问题点 , 修改更改为 if [ $JMSPENDINGCNT -gt 100 ] ,注意其中前后的空格,就是这两个空格导致了问题出现。 shell 脚本是不是因为太强大,所以这些写法也比较苛刻 ??
JMSPENDINGCNT=`cat JMSState_file|grep JMS_Pending_Count|tr -d 'L'|awk -F ':' '{print $2}'`
if [$JMSPENDINGCNT -gt 100]
then
echo "Check Time: `date '+%y/%m/%d %H:%M:%S'`,$HNAME warning" >> $WorkDir/alert_jmsjdbc.flag
echo " $HNAME "|mailx -s "`hostname`:$HNAME JMS Pending Count>=100,please check" $MailTo
else
echo "Check Time: `date '+%y/%m/%d %H:%M:%S'`,$HNAME JMS is normal." >> $WorkDir/log/$MON_DATE.log
echo "$HNAME JMS Queue ok" >> $WorkDir/alert_jmsjdbc.flag
fi
then
echo "Check Time: `date '+%y/%m/%d %H:%M:%S'`,$HNAME warning" >> $WorkDir/alert_jmsjdbc.flag
echo " $HNAME "|mailx -s "`hostname`:$HNAME JMS Pending Count>=100,please check" $MailTo
else
echo "Check Time: `date '+%y/%m/%d %H:%M:%S'`,$HNAME JMS is normal." >> $WorkDir/log/$MON_DATE.log
echo "$HNAME JMS Queue ok" >> $WorkDir/alert_jmsjdbc.flag
fi