我正在运行测试场景。每次执行场景时,特定目录中都有两个报告文件;一个是文本文件,另一个是HTML文件。我想创建一个索引文件链接到所有文件。我写了一个for循环来迭代场景文件并执行它们;我还想从HTML文件中读取测试场景的最终结果,并将其附加到索引文件中。在循环结束时,我使用find命令为链接附加<a>
标记。
for line in $(grep '^scenario ' $scenarioList | cut -d' ' -f2)
do
# Scripts for running tests
find -name '*.txt' -exec sh -c 'f="`basename {}`"; echo "<br><span>Text Report: <a href="./$f" target="_blank">$f</a> -- </span>" >> index.htm' \;
find -name '*.html' -exec sh -c 'f="`basename {}`"; p=`cat $f | grep -Eo "Final Result :.*\." | cut -d"." -f1`; echo "<span>HTML Report: <a href="./$f" target="_blank">$f</a></span> -- <span>$p</span><br>" >> index.htm' \;
# Other scripts
done
它应创建指向文本文件的链接,链接到HTML文件以及每个方案的最终结果在一行中以--
分隔。
如果我在一个场景中运行这个脚本,一切看起来都是正确的:
但如果我在更多场景中运行它,则会产生错误的链接:
我知道我可以使用-o
选项进行逻辑OR,但我不知道如何将文本文件和HTML文件相互分离以创建链接。任何帮助将不胜感激。
答案 0 :(得分:0)
您使用-o
-printf
和find
选项
find . -name '*.txt' -printf '<br><span>Text Report: <a href="%p" target="_blank">%f</a> -- </span>' -o -name '*.html' -printf '<span>HTML Report: <a href="%p" target="_blank">%f</a></span>'
我可能在那里搞砸了你的格式,但我认为你明白了。
%p选项打印相对于搜索的完整文件路径,%f打印文件名
答案 1 :(得分:0)
也许这样的事情。这假设可以从HTML文件的名称预测文本文件的名称。我还重构了你的shell脚本,它似乎是单一的和/或低效的。
grep '^scenario ' "$scenarioList" |
cut -d' ' -f2 |
while read -r line; do
# Scripts for running tests
find -name '*.html' -exec sh -c '
f="$(basename {} _style-all.html)";
echo "<br><span>Text Report: <a href="./${f}blog.txt" target="_blank">${f}blog.txt</a> -- </span>";
h=$(grep -Eo "Final Result :.*\." {} | cut -d"." -f1);
echo "<span>HTML Report: <a href="./${f}_style-all.html" target="_blank">${f}_style-all.html</a></span> -- <span>$p</span><br>"'
# Other scripts
done >index.html