我想根据我对 unix shell 脚本的输入值从表中删除某些行。我正在 shell 脚本中建立连接并终止它。
如果您现在注意到该字段已硬编码在 where 子句中。
如何将该值作为参数传递给脚本?
#!/bin/ksh
set -x
export DB2INSTANCE=db2clnt1
db2 ""CONNECT TO DBNAME user USER using passwd""
db2 ""delete from table where field =\'abcdefghijklmn\'""
db2 ""CONNECT RESET""
答案1
参考另一个社区的这个答案...
DB2 CLP 不支持使用参数标记。
但是,当您以非交互方式(即从 shell)运行 db2 时,您可以替换 shell 变量:
这应该会给你留下类似的东西:
#!/bin/ksh
set -x
export DB2INSTANCE=db2clnt1
db2 "CONNECT TO DBNAME user USER using passwd"
db2 "delete from table where field = '${1}'"
db2 "CONNECT RESET"
可以通过命令行中的字段值来调用
./myksh.sh "delete-this-field"
但重要的是要记住......
...这只是使用 shell 替换,您需要处理在字符串周围添加单引号...[并且]如果您的字符串有单引号,这会变得更加复杂。