从 bash 脚本中将日期传递给 sqlplus 命令
Posted
技术标签:
【中文标题】从 bash 脚本中将日期传递给 sqlplus 命令【英文标题】:Pass a date into an sqlplus command from within a bash script 【发布时间】:2013-03-14 22:16:12 【问题描述】:我有以下 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
但是我收到以下错误 - 它绝对不是在评估 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)
导致命令 'foo' 使用参数 'bar' 执行,$(..)
将被替换为 输出。见http://mywiki.wooledge.org/BashFAQ/002
【讨论】:
以上是关于从 bash 脚本中将日期传递给 sqlplus 命令的主要内容,如果未能解决你的问题,请参考以下文章