需要一些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;
请帮帮我。
答案 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的内容替换。
有些测试用例低于......
match
IRRELEVANT_LINE_1="irrelevantValue1"
ARGS="value"
IRRELEVANT_LINE_2="irrelevantValue2"