2013-06-12 115 views
0

我正在编写一个KSH脚本来接受一个.sql文件参数,接着是要编译的每个模式。脚本假定.sql文件是一个DB2 9.7过程。从KSH脚本编译DB2过程

我相信我停留在终止字符的db2命令的语法。我们总是使用at符号('@'),但是以下代码段失败,错误为“DB21001E”'db2'命令或DB2OPTIONS变量中指定的选项“ - @”不正确。任何援助将不胜感激。

#!/bin/ksh 
. $IBM_DB_DIR/db2profile 
db2 connect to dwdev3 
const_compil_string_suffix="[email protected] -f ../../stored_procedures/" 
script_name="ETL.THING.sql" 
db2 "$const_compil_string_suffix$script_name" 
db2 terminate 

我已经证实,上面的“终止”生成的字符串命令不工作在Linux提示符编译如预期的过程: DB2 -vtd @ -f ../../stored_procedures/ETL.THING。 sql

预先感谢您。

回答

1

尝试失去了引号:

db2 ${const_compil_string_suffix}${script_name} 
+1

mustaccio - 你是完全正确的。谢谢,只是删除那些引用完美的作品。对不起,我问了一个很容易解决的问题 - 我应该事先做过测试。 – CupOfTea

0

我怀疑选项字符串[email protected]可能是罪魁祸首。

当使用单个字符选项时,大多数unix命令都接受两种类型的选项,那些选项和那些不带参数的选项。

显然@字符正在作为选项参数进行处理,但是错误消息表明它被视为一个选项。

尝试分离选项,如:-v -t [email protected],对它们重新排序。或者删除-t-v选项之一。

虽然小心。我不知道db2 cli。试验需要您自担风险。

稍后添加了-t选项吗?

+1

组合'-vtd @'完全有效。没有'-t','-d @'是无效的。问题在于命令行解析 - 当您引用选项时,如'db2“-vtd @ ...”'DB2 CLI很难弄清楚什么是。 – mustaccio

+0

Henk Langeveld - 感谢您的建议。如同mustaccio所说,IBM的DB2对输入参数比较挑剔,所使用的语法是有效的,只是双引号的包装不是。 – CupOfTea