转义文件

时间:2017-05-19 10:40:02

标签: bash ant cut

我正在尝试检索Core.java类中定义的String,如下所示:

public static final String PLATFORM_VERSION = "3.0.1_170518";

所以我创建了一个测试ant文件(因为我想将它存储为一个在编译过程中使用的ant属性)。

<?xml version="1.0" encoding="UTF-8"?>
<project basedir="." default="get-core-version" name="test">

<target name="get-core-version">
    <exec executable="bash"
        outputproperty="coreVersionTemp"
        failonerror="true">
        <arg value="-c"/>
        <arg value="cat ./Core.java | grep VERSION"/>
    </exec>
    <echo message="&quot;ResultadoIntermedio&quot;: ${coreVersionTemp}"/>
    <exec executable="bash"
        outputproperty="coreVersion"
        failonerror="true">
        <arg value="-c"/>
        <arg value="echo ${coreVersionTemp} | cut -d'\&quot;' -f2"/>
    </exec>
    <echo message="Resultado: ${coreVersion}"/>
</target>      

分割蚂蚁代码以准确定位失败的位置。蚂蚁回归:

Buildfile: E:\git\test.xml

get-core-version:
     [echo] "ResultadoIntermedio":     public static final String PLATFORM_VERSION = "3.0.1_170518";

BUILD FAILED
E:\git\test.xml:14: exec returned: 1

Total time: 0 seconds

如您所见,错误在'cut'命令上。 ResultadoIntermedio是正确的。 如果我们在bash上执行完整命令,我们也会得到预期的结果:

$ cat ./Core.java | grep VERSION | cut -d '"' -f2
3.0.1_170518

我认为,问题在于-d选项之后的转义字符。 我试过了:

'"'
'\"'
\'\"\'
'&quot;'
\'&quot;\'
&apos;&quot;&apos;

还有其他一些组合......我怎么能正确地做到这一点?

非常感谢。

1 个答案:

答案 0 :(得分:0)

使用Javascript替换'“'到''''在'属性中'的解决方法工作正常,但这是一个有点讨厌的解决方案。

preg_*