在Solaris上运行egrep时出错

时间:2016-11-14 17:34:36

标签: grep solaris

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

1 个答案:

答案 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 那个应该保留反斜杠。