0

現在の日付でsqlplusを呼び出すことになっている次のbashスクリプトがあります。

#!/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');
4

1 に答える 1

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を参照してください

于 2013-03-14T22:33:09.777 に答える