如何在linux上使用ant脚本导出变量

时间:2014-07-28 09:55:08

标签: linux ant

我想从ant脚本导出变量,但是我做错了导致我收到错误:

  

sh:0:无法打开导出DISPLAY =:10

我的剧本片段

<target name="xvfb_start">
    <echo>Starting xvfb</echo>
    <exec executable="sh">
            <arg value="export DISPLAY=:10"/>
    </exec>
</target>

2 个答案:

答案 0 :(得分:1)

这不起作用,因为sh期望第一个参数是要执行的命令。 export DISPLAY=:10没有有效的命令(因为你将它作为单个参数传递给sh,它会将所有内容都作为脚本名称的一部分来启动,即使是空格和冒号)。

要使sh评估参数,请尝试sh -c。这将为您提供一个定义了变量DISPLAY的shell。由于命令行上没有其他命令,shell将终止并且您的变量将随之丢失。

解决方案:

  1. 将所有命令串在一起
  2. 执行脚本
  3. 对于#1:

    <exec executable="sh">
        <arg value="-c"/>
        <arg value="export DISPLAY=:10 ; xvfb"/>
    </exec>
    

    对于#2,将所有命令放入普通的shell脚本中并执行sh

答案 1 :(得分:1)

我发现有用的方法是在与运行ant相同的命令中导出变量。

例如(来自你的shell):

export DISPLAY=:10 ; ant your-target-name

~/.bashrc(如果有的话)中导出的任何变量都可用于ant运行的进程。我的项目中有export DISPLAY。 (如果您正在对此进行测试,请不要忘记致电reset让终端接听.bashrc的更改。