0

我正在编写一个 KSH 脚本来接受 .sql 文件参数,后跟要编译该文件的每个模式。该脚本假定 .sql 文件是 DB2 9.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

我已经确认“终止”上方的结果字符串命令确实在 linux 提示符下按预期编译过程:db2 -vtd@ -f ../../stored_procedures/ETL.THING.sql

先感谢您。

4

2 回答 2

1

尝试丢失引号:

db2 ${const_compil_string_suffix}${script_name}
于 2013-06-12T21:46:27.260 回答
0

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

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

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

尝试分离选项,如:-v -t -d@,重新排序。或删除其中一个-t-v选项。

不过要小心。db2我对cli一无所知。实验风险自负。

-t 选项是后来添加的吗?

于 2013-06-12T22:18:56.290 回答