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

时间:2016-01-14 06:40:47

标签: string shell ant

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

以下是我使用ant-编写的代码                                   

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

我面临的问题是abc.sh中ARGS的价值格式为ARGS =&#34; value&#34;

此代码的输出是 - ARGS =&#34;值&#34; SOME_VALUE =真

预期产量是 - ARGS =&#34;值some_value = true&#34;

请帮帮我。

1 个答案:

答案 0 :(得分:0)

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

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

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

... ...变为

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

引号已替换为单引号。使用单引号可以让我们在match的{​​{1}}和replace属性中轻松使用引号:

<replaceregexp>

正则表达式<replaceregexp file="abc.sh" match='ARGS="([^"]*)"' replace='ARGS="\1 some_value=true"' byline="true" /> 将匹配以ARGS="([^"]*)"开头的字符串。然后,引号(ARGS=")的字符将匹配并存储在捕获组1中。最后,正则表达式将匹配尾随的引号。

"属性中,replace\1属性中的捕获组1的内容替换。

有些测试用例低于......

原始abc.sh

match

替换为abc.sh

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