我需要创建一组要在命令--remove
选项中使用的正则表达式模式lcov
,以删除覆盖文件中的一些无意义的条目。
阅读它的联机帮助页似乎应该将模式列表作为空格分隔的单引号字符串(如 in等)lcov
交给它。'patte*n1' 'pa*ter*2' 'p*3'
我能够编写一个小的 bash 脚本,它以命令所需的形式准确生成我需要的列表。如果我发出
export LIST=$( ./myscript.sh )
然后,做 a echo $LIST
,我得到了我期望的列表
'path/file1' 'path/file2' 'path/file3'
(正则表达式模式列表由一些要从分析中删除的模式的结尾部分组成)。
当我将此列表传递给命令时出现问题:
lcov --remove coverage_report.info '/usr/*' $( echo $LIST ) --output-file coverage_report.info.cleaned
为了从我的列表中删除 /usr/* 和文件,但它没有按预期工作:实际上没有从我的路径列表中删除路径。我尝试了不同的形式:
echo $LIST | xargs -i lcov --remove coverage_report.info {} --output-file coverage_report.info.cleaned
如果我echo $LIST
直接在命令行上获取并复制/粘贴它的输出,则该命令实际上可以工作并删除我想要摆脱的所有路径。我的印象是我不了解某些命令选项处理的所有内部方面以及嵌套命令的评估顺序。
提前感谢任何愿意提供帮助的人!