我试图在Ant中执行类似的shell脚本:
<exec executable="bash" newenvironment="false" dir="./">
<arg value="script.sh">
</exec>
但是当它执行脚本时,所有对环境变量的引用(如$ MY_VARIABLE)都会返回为空字符串。我该如何解决这个问题?根据{{3}}我认为环境应该被传播。 (我也意识到newenvironment默认为false。)
编辑:我看到了env元素,但我没有看到一种方法来集中传递环境。有没有办法做到这一点?
答案 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>