如何访问从ant脚本传递到shell脚本的值

时间:2015-07-23 06:10:55

标签: ant

我们有一个shell脚本,我们从一个ant脚本调用它。我们需要从ant脚本将输入传递给shell脚本。它可以按如下方式完成

<target name="help">
  <exec executable="cmd">
    <arg value="Hello"/>
    <arg value="Welcome"/>
    <arg value="World"/>
  </exec>
</target>

但我们无法弄清楚如何访问shell脚本中从ant脚本传递的值。任何人都可以建议我提供正确的信息。谢谢。

1 个答案:

答案 0 :(得分:2)

使用属性作为输入,例如:

<project>
 <property name="foobar" location="C:/foobar" />
 <property name="foo" value="bar" />

 <exec executable="cmd">
   <arg value="/c" />
   <env key="PATH" path="${env.PATH};${foobar}/bin" />
   <arg value="set" />
 </exec>

 <exec executable="cmd">
  <arg value="/c" />
  <arg value="echo" />
  <arg value="${foo}" />
 </exec>
</project> 

您必须使用/c作为第一个arg值 当调用期望%1 ...%9作为输入的bat文件时,第一个arg为<arg value=/c">,第二个arg <arg value="yourbatfile.bat/>
以下args <arg value=.../>将是%1,依此类推,fe :

foobar.bat

@echo off
echo First argument %1
echo Second argument %2

的build.xml

<project>

<exec dir="dir="path/to/batfile" executable="cmd">
 <arg value="/c"/>
 <arg value="foobar.bat"/>
 <arg value="foo"/>
 <arg value="bar"/>
</exec>

</project>


输出
[exec] First argument foo
[exec] Second argument bar

调用一个shellcript的示例,第一个arg必须是<arg value="/path/to/shellscript.sh"/>,以下args <arg value="..."/>将是$ 1 ...

foobar.sh

#!/bin/bash

echo "\$# = $#"
echo "\$0 = $0"
echo "\$1 = $1"
echo "\$2 = $2"

的build.xml

<project>
 <exec executable="/bin/bash">
  <arg value="/path/to/foobar.sh"/>
  <arg value="foo"/>
  <arg value="bar"/>
 </exec>
</project>