通过 ANT 将值附加到 shell 脚本中的属性



需要一些关于 ant 和 shell 脚本的帮助。我需要打开一个 shell 脚本并使用 ant 将一些值附加到 shell 脚本的属性中。

下面是我用蚂蚁写的代码——

<property name="args" value="${ARGS}"/>         
<replaceregexp file="abc.sh"
match="ARGS=(.*)"
replace="ARGS=${args} some_value=true" 
byline="true"
flags="i" />

我面临的问题是 ARGS 的值 abc.sh 格式为 ARGS="value"

此代码的输出为 -ARGS="value" some_value=true

预期输出为 -ARGS="value some_value=true"

请在这里帮助我。

我所知,你可以只用<replaceregexp>来得到你想要的东西。不需要${args}${ARGS}属性。

在XML中,属性值可以用引号(")或单引号(')括起来。在以下示例中...

match="..."
replace="..."

。成为。。。

match='...'
replace='...'

号已替换为单引号。使用单引号使我们能够轻松地在<replaceregexp>matchreplace属性中使用引号:

<replaceregexp
    file="abc.sh"
    match='ARGS="([^"]*)"'
    replace='ARGS="1 some_value=true"'
    byline="true" />

正则表达式 ARGS="([^"]*)" 将匹配以 ARGS=" 开头的字符串。然后,引号 ( ") 的字符将被匹配并存储在捕获组 1 中。最后,正则表达式将匹配尾随引号。

replace 属性中,1 将替换为 match 属性中捕获组 1 的内容。

下面是一些测试用例...

原 abc.sh

IRRELEVANT_LINE_1="irrelevantValue1"
ARGS="value"
IRRELEVANT_LINE_2="irrelevantValue2"

已替换 abc.sh

IRRELEVANT_LINE_1="irrelevantValue1"
ARGS="value some_value=true"
IRRELEVANT_LINE_2="irrelevantValue2"

相关内容

  • 没有找到相关文章

最新更新