Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Shell 如何在ant build.xml中将linux机器完全限定主机名设置为环境变量_Shell_Ant_Environment Variables_Build.xml - Fatal编程技术网

Shell 如何在ant build.xml中将linux机器完全限定主机名设置为环境变量

Shell 如何在ant build.xml中将linux机器完全限定主机名设置为环境变量,shell,ant,environment-variables,build.xml,Shell,Ant,Environment Variables,Build.xml,我有一个antbuild.xml 我试图将机器的完全限定主机名(例如:“abc us.xyz.com”)设置为ant中的环境变量,然后尝试在任何地方使用该环境变量 但我不能这样做 到目前为止,我尝试的是: <target name="get-fqdn"> <echo>Getting the fully qualified hostname of the machine</echo> <exec executable="/bin/b

我有一个ant
build.xml

我试图将机器的完全限定主机名(例如:“abc us.xyz.com”)设置为ant中的环境变量,然后尝试在任何地方使用该环境变量

但我不能这样做

到目前为止,我尝试的是:

    <target name="get-fqdn">
    <echo>Getting the fully qualified hostname of the machine</echo>
    <exec executable="/bin/bash">
    <env key="FQDN" value="hostname-f"/>
    </exec>
    </target>
在第二个目标中,我试图访问环境变量
FQDN
,已在第一个目标中设置

但它不起作用。请帮忙

当我
echo
它时,我没有在第二个目标中获得
FQDN
的值。

首先,任何
调用都将在其自己的shell中运行,因此您在该调用中设置的任何环境变量将只存在于该shell中,而不存在于父shell(Ant)中。您需要一种存储环境变量值的方法,该方法将持久化跨外壳调用,例如在属性文件中:

<target name="get-fqdn">
  <exec executable="/bin/bash">
    <env key="FQDN" value="some_host.com"/>
    <arg value="-c"/>
    <arg line="echo FQDN=$FQDN > fqdn.properties"/>
  </exec>
</target>

然后,您只需加载此属性文件并使其包含的属性可供Ant使用:

<target name="get-database" depends="get-fqdn">
  <property file="fqdn.properties"/>
  <echo message="retrieved FQDN=${FQDN}"/>
</target>

首先,任何
调用都将在其自己的shell中运行,因此在此调用中设置的任何环境变量都将仅存在于该shell中,而不存在于父shell(Ant)中。您需要一种存储环境变量值的方法,该方法将持久化跨外壳调用,例如在属性文件中:

<target name="get-fqdn">
  <exec executable="/bin/bash">
    <env key="FQDN" value="some_host.com"/>
    <arg value="-c"/>
    <arg line="echo FQDN=$FQDN > fqdn.properties"/>
  </exec>
</target>

然后,您只需加载此属性文件并使其包含的属性可供Ant使用:

<target name="get-database" depends="get-fqdn">
  <property file="fqdn.properties"/>
  <echo message="retrieved FQDN=${FQDN}"/>
</target>