Ant exec shell脚本 - 失去环境

时间:2009-09-25 17:36:10

标签: shell ant

我试图在Ant中执行类似的shell脚本:

<exec executable="bash" newenvironment="false" dir="./">
  <arg value="script.sh">
</exec>

但是当它执行脚本时,所有对环境变量的引用(如$ MY_VARIABLE)都会返回为空字符串。我该如何解决这个问题?根据{{​​3}}我认为环境应该被传播。 (我也意识到newenvironment默认为false。)

编辑:我看到了env元素,但我没有看到一种方法来集中传递环境。有没有办法做到这一点?

2 个答案:

答案 0 :(得分:4)

您是否导出了变量?除非您导出变量,否则子流程不会看到变量:

$ cat a.xml
<project>
  <exec executable="bash" newenvironment="false" dir=".">
    <arg value="script.sh"/>
  </exec>
</project>
$ cat script.sh
#!/bin/sh
env
$ MY_VARIABLE=defined
$ ant -f a.xml | grep MY_VARIABLE
$ export MY_VARIABLE
$ ant -f a.xml | grep MY_VARIABLE
     [exec] MY_VARIABLE=defined

答案 1 :(得分:0)

嗯,执行一个新的bash shell(无论为你的活动用户定义了什么配置和新环境),然后bash shell接受参数并执行。

可以尝试以下命令在当前的shell环境中执行

<exec executable="script.sh" newenvironment="false" dir="./">
</exec>