我从shell脚本调用ant。 Ant又调用java来运行SQL查询。 Query返回一个标志值,0或1。
如何将查询输出(0/1)返回给shell脚本?
答案 0 :(得分:1)
您可以使用outputproperty
将值从java返回到ant,并显示@VirtualTroll。然后在ant中我会将变量写入临时文件:
<java jar="..." outputproperty="output"/>
<echo file="/tmp/query_result">${output}</echo>
现在在bash脚本中,您应首先检查ant的错误代码和文件的存在,然后阅读内容。
答案 1 :(得分:0)
ant的java task有一个特殊参数“ outputproperty ”来捕获java任务的输出。
您只需要在java任务中设置参数
<java jar="..." outputproperty="output"/>
<echo>The output is ${output}</echo>
然后你可以用参数值做任何你想做的事。
答案 2 :(得分:0)
在 ANT 文件中,配置java
任务以将输出写入名为output
的属性。然后,如果output
的值不 0
,我们可以FAIL
构建,并将output
的值传递给shell。否则,构建将为SUCCESS
并将0
传递给shell。
<java jar="..." outputproperty="output"/>
<!-- Exit with non-zero exit code -->
<fail message="Output returned non-zero" status="${output}">
<condition>
<not>
<matches pattern="0" string="{output}"/>
</not>
</condition>
</fail>
<!-- Else ANT exits with 0 exit code -->
现在,在 SHELL 脚本中,使用$?
# Your ANT execution
ant -f build.xml
# Capture exit code into variable $exitcode
exitcode=$?
# Decide what to do with $exitcode
if [ $exitcode -eq 0 ]; then
echo "ANT returned with 0"
else
echo "ANT returned with $exitcode"
fi