如何将 sysdate-1 从 Dual 传递到 grep

如何将 sysdate-1 从 Dual 传递到 grep

我有一个.log,其中包含从周日到周六的一周日志。如果我今天运行脚本,那么它应该搜索昨天

我在做

Date = `print " set heading off
  set feedback off
  set pagesize 0
  select to_char(sysdate-1, 'DD Mon')" | Sqlplus`
print "Date = $Date"

grep .Ccd /var/tmp/logs/poll.log | grep "$date"

但我无法获取 sysdate-1

答案1

我不确定你是否可以通过管道传输类似的东西,尤其是像sqlplus.我将这样做:

#!/bin/bash

USER=oracle
PASSWORD=adminadmin
INSTANCE=tiger1p

DATE=$(sqlplus -s /nolog << END_SQL
connect $USER/$PASSWORD@$INSTANCE
set feedback off
set echo off
set verify off
set head off
set pagesize 0
select to_char(sysdate-1, 'DD Mon') from dual;
END_SQL
)
grep Ccd /var/tmp/logs/poll.log | grep "$DATE"

用于获取“sysdate - 1”的 SQL 驻留在“here”文档中,但被放入名为 的 shell 变量中DATE。我对关闭所有sqlplus设置有一个迷信,你的里程可能会有所不同。

相关内容