2013-03-14 90 views
0

我有以下bash脚本,它应该调用当前日期的sqlplus。从bash脚本内将一个日期传入sqlplus命令

#!/bin/bash 

DATE='date +%F' 

sqlplus -s << EOF1 
DB_username/DB_password 
set heading off 
exec PLSQL_PROCEDURE('$DATE', '-30','someString','/home/outputFolder'); 
exit 
EOF1 

exit 

我收到以下错误however-这绝对不是评价date命令:

BEGIN PLSQL_PROCEDURE('date +%F', '-30', 'someString', '/home/outputFolder'); END; 

* 
ERROR at line 1: 
ORA-01841: (full) year must be between -4713 and +9999, and not be 0 
ORA-06512: at "DataBaseName.PLSQL_PROCEDURE", line 19 
ORA-06512: at line 1 

我怎样才能使之穿过当前日期,这样解决这个问题?

PLSQL_PROCEDURE('2013-03-14', '-30', 'someString', '/home/outputFolder'); 

回答

1

试试这个:

#!/bin/sh 

DATE=$(date +%F) # note the $() form 

sqlplus -s << EOF1 
DB_username/DB_password 
set heading off 
exec PLSQL_PROCEDURE('$DATE', '-30','someString','/home/outputFolder'); 
exit 
EOF1 

你应该了解命令替换:本$(foo bar)导致命令“富”与参数“酒吧”和$(..)执行将被替换输出。见http://mywiki.wooledge.org/BashFAQ/002