我正在编写一个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
我已经确认,'terminate'上面的结果字符串命令在linux下运行时可以按预期编译过程: db2 -vtd @ -f ../../ stored_procedures / ETL.THING.sql
提前谢谢。
答案 0 :(得分:1)
尝试丢失引号:
db2 ${const_compil_string_suffix}${script_name}
答案 1 :(得分:0)
我怀疑选项字符串-vtd@
可能是罪魁祸首。
当使用单个字符选项时,大多数unix命令接受两种类型的选项,包括带有和没有参数的选项。
显然,@
字符正在作为选项参数处理,但错误消息表明它本身被视为一个选项。
尝试将选项分开,如:-v -t -d@
,重新排序。或者删除其中一个-t
或-v
选项。
要小心。我不了解db2
cli。实验需要您自担风险。
以后是否添加了-t选项?