ant concat,echo在变量替换后无法打印

时间:2015-03-02 03:05:19

标签: ant build ant-contrib

<target name="init">
    <loadfile property="Files" srcFile="C:/tabnames.txt">
    </loadfile>
    <foreach list="${Files}"
        target="dbload"
        param="var"
        delimiter="${line.separator}" />
</target>  

<target name="load">
    <echo file="D:/README" append="true">selct * from "${var}" where ******; :${line.separator}</echo>    
    <!--   <concat file="D:/README" append="true">selct * from "${var}" where ******; :${line.separator}</concat> -->
</target>

和输出:

select * from "a  
select * from "b  

问题是在变量替换后我无法连接...

我需要像

select * from "a"  where *******
select * from "b" where ********`

编辑: -

我已经有了...想要添加新行作为第一个lne,但它添加为lastline ...

1 个答案:

答案 0 :(得分:0)

一些提示:

  • 您应该使用for代替<foreach><for>不要求您使用单独的目标才能工作。请务必在定义资源时使用net/sf/antcontrib/antlib.xml,而不是net/sf/antcontrib/antcontrib.properties
  • 一旦属性(Ant不使用变量),就无法更改。您传递的是参数,您使用@{var}语法而不是属性的${var}语法。参数随每次调用一起传递,可以更改。

以下是<for>的例行程序:

<for list="${Files}"
    param="var">
    <sequential>
        <echo file="D:/README" 
            append="true"
            message="select * from &quot;@{var}&quot; where ******"/>
   </sequential>
</for>

请注意@{var}而不是${var}