在Solaris上运行egrep时出错

在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作业)中,它

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作业)中,它会出现上述错误。以下是脚本:

    #!/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中使用相同的斜杠。