从KSH脚本编译DB2过程

从KSH脚本编译DB2过程,db2,ksh,Db2,Ksh,我正在编写一个KSH脚本,以接受一个.sql文件参数,后跟要编译该文件的每个模式。该脚本假定.sql文件是DB29.7过程 我相信我对终止字符的db2命令的语法已经有了一定的了解。我们始终使用at符号(“@”),但是以下代码段失败,出现错误“DB21001E”“db2”命令后或DB2OPTIONS变量中指定的选项“-@”不正确。”请提供帮助 #!/bin/ksh . $IBM_DB_DIR/db2profile db2 connect to dwdev3 const_compil_string_

我正在编写一个KSH脚本,以接受一个.sql文件参数,后跟要编译该文件的每个模式。该脚本假定.sql文件是DB29.7过程

我相信我对终止字符的db2命令的语法已经有了一定的了解。我们始终使用at符号(“@”),但是以下代码段失败,出现错误“DB21001E”“db2”命令后或DB2OPTIONS变量中指定的选项“-@”不正确。”请提供帮助

#!/bin/ksh
. $IBM_DB_DIR/db2profile
db2 connect to dwdev3
const_compil_string_suffix="-vtd@ -f ../../stored_procedures/"
script_name="ETL.THING.sql"
db2 "$const_compil_string_suffix$script_name"
db2 terminate
我已确认“terminate”上方的结果字符串命令在linux提示符下确实可以按预期编译过程: db2-vtd@-f..//存储过程/ETL.THING.sql


提前谢谢。

试着去掉引号:

db2 ${const_compil_string_suffix}${script_name}

我怀疑选项字符串
-vtd@
可能是罪魁祸首

使用单字符选项时,大多数unix命令接受两种类型的选项,即带参数的选项和不带参数的选项

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

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

不过要小心。我不了解
db2
cli。试验的风险由你自己承担


后来添加了-t选项吗?

组合
-vtd@
完全有效<没有
-t
,code>-d@无效。问题是在命令行解析中-当您引用选项时,如在
db2“-vtd@…”
中,db2 CLI很难弄清楚什么是什么。Henk Langeveld-感谢您的建议。IBM的DB2对输入参数相当挑剔,正如mustaccio所说,所使用的语法是有效的,只是双引号的包装器不是。mustaccio-你完全正确。谢谢,只需删除上面提到的引号就可以了。对不起,我问了一个很容易解决的问题——我应该事先测试一下。