在Solaris上运行egrep时出错
Sun OS 5.8 bashshell脚本 Oracle 10g数据库在Solaris上运行egrep时出错,grep,solaris,Grep,Solaris,Sun OS 5.8 bashshell脚本 Oracle 10g数据库 Error 1 the command executing at the time of the error was egrep ORA-\|TNS-\|PLS-\|Error\|PLW-\|IMP-\|EXP-\|RMAN-\|SQL- alert_work.log > alert.err on line 11 当我手动运行“egrep”行时,它会成功运行。但在bash脚本(cron作业)中,它
Error 1 the command executing at the time of the error was egrep ORA-\|TNS-\|PLS-\|Error\|PLW-\|IMP-\|EXP-\|RMAN-\|SQL- alert_work.log > alert.err on line 11
当我手动运行“egrep”行时,它会成功运行。但在bash脚本(cron作业)中,它会出现上述错误。以下是脚本:
#!/bin/bash
SID=$ORACLE_SID
DOMAIN=$(uname -n)
DBALIST='dbak@xxx.com'
YESTERDAY=`TZ=CST+24 date +%Y-%m-%d`
cd $ORACLE_HOME/admin/$SID/bdump
mv alert_${SID}.log alert_work.log
touch alert_${SID}.log
cat alert_work.log >> alert_${SID}.hist
egrep ORA-\|TNS-\|PLS-\|Error\|PLW-\|IMP-\|EXP-\|RMAN-\|SQL- alert_work.log > alert.err
if [ `cat alert.err|wc -l` -gt 0 ]
then
mailx -s "${DOMAIN}.${SID} ALERT LOG ERRORS FOUND" $DBALIST < alert.err.log
fi
/usr/bin/mv alert_work.log $ORACLE_HOME/admin/$SID/bdump/hist/alert_${SID}_${YESTERDAY}.log
exit
#/bin/bash
SID=$ORACLE\u SID
域=$(uname-n)
数据库管理员dbak@xxx.com'
昨天=`TZ=CST+24日+%Y-%m-%d`
cd$ORACLE_HOME/admin/$SID/bdump
mv alert_${SID}.log alert_work.log
触摸警报${SID}.log
cat alert_work.log>>警报${SID}.hist
白鹭ORA-\\\\\\\\\\\\\\\\ TNS-\\\\\\ PLS-\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
如果[`cat alert.err | wc-l`-gt 0]
然后
mailx-s“${DOMAIN}.${SID}发现警报日志错误”$DBALIST
我怀疑您的egrep正则表达式,您没有引用它,并在Bash脚本中创建了一个脚本,然后运行该脚本,这让我认为您最终会得到:
egrep ORA-| TNS-| PLS-| Error | PLW-| IMP-| EXP-| RMAN-| SQL-alert|u work.log>alert.err
这不是你想要的。尝试:
白鹭'ORA-\\\\\\\\\\\\\\\\\\\\ TNS-\\\\\\\\\\ PLW-\\\\\\\\\\导入-\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ RMAN-\\\\\\\\\\\\\\\\\\ SQL
这将保留反斜杠。在shell中运行
哪个egrep
,并确保在crontab中使用相同的斜杠。