如何将查询输出返回给shell脚本?

时间:2014-04-08 12:23:43

标签: shell ant

我从shell脚本调用ant。 Ant又调用java来运行SQL查询。 Query返回一个标志值,0或1。

如何将查询输出(0/1)返回给shell脚本?

3 个答案:

答案 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