Sun OS 5.8 Bash shell脚本 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作业)中它会出现上述错误。这是脚本:
#!/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
答案 0 :(得分:0)
我怀疑你的egrep正则表达式,事实上你没有引用它,并在Bash脚本中创建一个脚本,然后运行脚本,让我认为你最终会: egrep ORA- | TNS- | PLS- |错误| PLW- | IMP- | EXP- | RMAN- | SQL- alert_work.log&gt; alert.err 这不是你想要的。尝试: egrep&#39; ORA- \ | TNS- \ | PLS- \ |错误\ | PLW- \ | IMP- \ | EXP- \ | RMAN- \ | SQL - &#39; alert_work.log&gt; alert.err 那个应该保留反斜杠。