gpt4 book ai didi

linux - ant 的 中的引号问题

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:59:23 25 4
gpt4 key购买 nike

这是在终端上运行良好的命令

egrep Version ./path/fileName.java | cut -d"\"" -f4

我在我的代码中使用了以下内容

<exec command="egrep Version ./path/fileName.java | cut -d&quot;\&quot; -f4)" outputproperty="VER"/>

但出现错误

the command attribute is deprecated.
[exec] Please use the executable attribute and nested arg elements.
[exec] Result: 1
[echo] "Version: egrep: invalid argument `\\' for `--directories'
[echo] Valid arguments are:
[echo] - `read'
[echo] - `recurse'
[echo] - `skip'
[echo] Usage: egrep [OPTION]... PATTERN [FILE]...
[echo] Try `egrep --help' for more information."

少了一个quot;在命令中,因为如果我写 2 个引号,它会给我一些不平衡的引号错误。

最佳答案

Ant 的<exec>使用 Java 的执行规则,特别是它不是 shell,并且它自己不理解管道和重定向。最好的选择可能是调用 shell。如果您想稍后在构建中使用它,您还需要在属性中捕获输出:

<exec executable="sh" outputproperty="version.number">
<arg value="-c" />
<arg value="egrep Version ./path/fileName.java | cut -d'&quot;' -f4" />
</exec>

或者,您可以忘记 exec 并使用 loadfile 直接在 Ant 中实现所需的逻辑。用filterchain而不是调用外部进程:

<loadfile srcFile="path/fileName.java" property="version.number"
encoding="UTF-8">
<filterchain>
<tokenfilter>
<!-- equivalent of egrep Version -->
<containsregex pattern="Version" />
<!-- equivalent of the cut - extract the bit between the third and
fourth double quote marks -->
<containsregex pattern='^[^"]*"[^"]*"[^"]*"([^"]*)".*$$'
replace="\1" />
</tokenfilter>
<!-- I'm guessing you don't want a trailing newline on your version num -->
<striplinebreaks />
</filterchain>
</loadfile>

关于linux - ant 的 <exec> 中的引号问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19868442/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com