将包含美元符号的字符串传递给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.