我正在运行一个脚本,我想在其中检测WebSphere MQ版本,如果此版本是7.1,那么我想运行runmqsc
来设置通道身份验证。我这样做:
<if>
<or>
<os name ="AIX">
<os name ="Linux">
</or>
<then>
<loginfo>Checking the installed MQ version.</loginfo>
<osexec commandbase="su" dir="/bin" mode="osexec">
<args>
<arg value="-"/>
<arg value="- ${mq_admin_name}"/>
<arg value="-c"/>
<arg line="dspmqver | grep Version"/>
</args>
</osexec>
<if>
<not>
<not>
<contains casesensitive="yes" substring="7.1.0.0" string="${result.output}"/>
</not>
</not>
<then>
...........
..........
在此之后我使用runmqsc
。
但问题是字符串{result.output}
是空的。 dspmqver
命令没有正确执行。有人建议为什么?
答案 0 :(得分:0)
帖子的标题,“如何检查ant中的Websphere MQ版本?”,dspmqver
没有正确执行的结论,以及缺乏诊断,这里有一点不匹配信息。
dspmqver
未正确执行的结论。显示的代码并未表明它甚至可以执行dspmqver
。result
属性的代码部分。我的建议如下:
osexec
是否填充result.error
。我猜想,鉴于result.output
的存在,将填充属性。如果osexec
没有填充它,请使用STDERR
填充的内容,或修改它以使用STDERR
执行某些操作(如果尚未执行)。</osexec>
下方,添加<loginfo>Call to dspmqver returned: STDOUT='${result.output}', STDERR='${result.error}'</loginfo>
grep
。 dspmqver
命令应该将某些内容返回到STDERR
或STDOUT
,如果grep
与搜索字符串不完全匹配,dspmqver
会将其过滤掉dspmqver
甚至正在执行的假设。如果是,则返回某事或剪切FDC文件。任何其他行为都是{{1}}中的错误,无法通过Ant解决或回复此帖子。基本上,分而治之。继续删除东西,直到你得到输出。这将隔离问题。打印有用的诊断信息,这样一旦你发现了问题,就可以了解它是什么。