使用包含美元符号的命令行参数在bash脚本中运行ant脚本

时间:2014-04-12 13:48:16

标签: bash ant

将包含美元符号的字符串传递给ant脚本时遇到问题。

在tclist文本文件中,

org.apache.jmeter.gui.action.Load$Test  testFile3

在bash脚本中,

while read tcls tmethod
do

    echo ${tcls},${tmethod}
    ant -Dtcls="$tcls" -Dtmethods="$tmethod"

done < $tclist

在蚂蚁脚本中,

<echo message="Run ${tcls}, ${tmethods}."/>
<junit haltonerror="false" haltonfailure="false" printsummary="true" fork="true">
    <test name="${tcls}" todir="${result.junit.dir}" methods="${tmethods}"/>
</junit>

bash echo message,

org.apache.jmeter.gui.action.Load$Test,testFile3

ant echo message,

[echo] Run org.apache.jmeter.gui.action.Load, testFile3.

回显消息显示美元符号后面的子串消失了...... 几个小时我都陷入了这个问题。有没有办法打印整个字符串?

更新 临时补救措施...... 我找不到理由,但我解决了这个问题。 我在tclist中的“$”之后添加“/”,不在ant脚本中删除。接下来,我在ant脚本中使用sed表达式将“$ /”替换为“$”。这里的评论(https://stackoverflow.com/a/6151678/1900548)帮助我提出了这个想法。如果有人知道这个问题的确切原因,请告诉我。感谢。

在tclist文本文件中,

org.apache.jmeter.gui.action.Load$/Test testFile3

在蚂蚁脚本中,

<exec executable="sed" inputstring="${tcls}" outputproperty="tcls_after">
    <arg value="s/$\//$/g"/>
</exec>

<echo message="Run ${tcls_after}, ${tmethods}."/>

ant echo message,

[echo] Run org.apache.jmeter.gui.action.Load$Test, testFile3.

0 个答案:

没有答案