我正在尝试检索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=""ResultadoIntermedio": ${coreVersionTemp}"/>
<exec executable="bash"
outputproperty="coreVersion"
failonerror="true">
<arg value="-c"/>
<arg value="echo ${coreVersionTemp} | cut -d'\"' -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选项之后的转义字符。 我试过了:
'"'
'\"'
\'\"\'
'"'
\'"\'
'"'
还有其他一些组合......我怎么能正确地做到这一点?
非常感谢。
答案 0 :(得分:0)
使用Javascript替换'“'到''''在'属性中'的解决方法工作正常,但这是一个有点讨厌的解决方案。
preg_*