我们有一个shell脚本,我们从一个ant脚本调用它。我们需要从ant脚本将输入传递给shell脚本。它可以按如下方式完成
<target name="help">
<exec executable="cmd">
<arg value="Hello"/>
<arg value="Welcome"/>
<arg value="World"/>
</exec>
</target>
但我们无法弄清楚如何访问shell脚本中从ant脚本传递的值。任何人都可以建议我提供正确的信息。谢谢。
答案 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>