2009-09-25 120 views
3

我想在蚂蚁给exec一个shell脚本,像这样:蚂蚁EXEC shell脚本 - 失去环境

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

但是,当执行脚本,环境变量,如$ MY_VARIABLE所有引用回来的空字符串。我如何解决这个问题?根据http://ant.apache.org/manual/Tasks/exec.html我认为应该传播环境。 (我也意识到newenvironment默认为false)

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

+0

在哪里执行? – Mark 2009-09-26 11:45:32

+0

作为一个环境变量...问题是我怎样才能让一个子进程看到环境,即当Runtime.exec在封面下面调用时,它没有传递给它的环境。传递每个项目都是不可行的,因为我正在尝试写一些简单和可扩展的东西。 – PHeath 2009-09-28 13:10:54

回答

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 
0

嗯,执行一个新的bash shell(与任何配置和新的环境,为您的活跃用户自定义),然后在bash shell取得的参数并执行。

不妨试试以下是MY_VARIABLE定义在当前shell环境

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