无法在 AdminApp.update() 函数中使用字符串变量

问题描述 投票:0回答:1

C:\IBM_Thinclient_DEV>wsadmin.bat -lang jython -host traj-d-was01 -port 8879 -f Auto-deployments/Jython/UpdateApplicationSingleFile.py usergroups.yaml

WASX7209I:使用 SOAP 连接器连接到节点 ******Manager01 上的进程“dmgr”;进程类型为:DeploymentManager

WASX7303I:以下选项将传递到脚本环境,并可作为存储在 argv 变量中的参数使用:“[usergroups.yaml]”

WASX7017E:运行文件“Auto-deployments/Jython/UpdateApplicationSingleFile.py”时收到异常;异常信息:com.ibm.bsf.BSFException:来自 Jython 的异常:

回溯(最里面的最后):

(无代码对象)位于第 0 行

文件“”,第 17 行

   AdminApp.update('api-docs', 'file', '[-operation addupdate -contents C:/IBM_Thinclient_DEV/Auto-deployments/ear/swagger-spec/' +filename '-contenturi api-docs.war\yaml\' +filename ']')

                                                                                                                                            ^

语法错误:语法无效

#####UpdateApplicationSingleFile.py######

导入操作系统路径

导入系统

文件名=sys.argv[0]

打印“文件名=”+文件名

AdminApp.update('api-docs', '文件', '[-操作 addupdate -contents C:/IBM_Thinclient_DEV/Auto-deployments/ear/swagger-spec/' +文件名 '-contenturi api-docs.war\yaml ' +文件名']')

AdminApp.update('api-docs', '文件', '[-操作 addupdate -contents C:/IBM_Thinclient_DEV/Auto-deployments/ear/swagger-spec/' +文件名 '-contenturi api-docs.war\yaml ' +文件名']')

websphere jython-2.7
1个回答
0
投票

您需要放置

+
符号来构建连接字符串文字和变量部分的字符串。

所以代替:

AdminApp.update('api-docs', 'file', '[-operation addupdate -contents C:/IBM_Thinclient_DEV/Auto-deployments/ear/swagger-spec/' +filename '-contenturi api-docs.war\yaml' +filename ']')

它应该看起来更像

AdminApp.update('api-docs', 'file', '[-operation addupdate -contents C:/IBM_Thinclient_DEV/Auto-deployments/ear/swagger-spec/' + filename + ' -contenturi api-docs.war\yaml' + filename + ']')

请注意,除了缺少的

+
标志之外,我还在之前添加了一个空格 -contenturi
,因为除非您的“文件名”变量已经包含自己的空格,否则该值将与“-contents ...”参数值一起模糊.

链接

wsadmin+Jython 上的一些常规有用链接:

© www.soinside.com 2019 - 2024. All rights reserved.