如何在makefile中验证非空行和非注释行的文件
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在makefile中验证非空行和非注释行的文件相关的知识,希望对你有一定的参考价值。
我想验证sample.x中的非空行和非注释行在makefile中,如果验证通过它应该打印成功,如果不是,它应该退出执行。
我正在尝试使用以下代码,但无法成功。
validate=$(sed "/^s*$/d" ${TEX_FILENAME} | sed "/^ *%/d;s/%.*//" | wc -l)
if [ "${validate}" -gt 0 ];
then
echo " validate success";
else
echo " validate not successfull";
echo;
exit 2;
fi
答案
这里存在许多问题,复杂性和错误。
在Makefile中,您需要将要传递给shell的任何美元符号加倍。
你的sed
可能不理解你试图使用的正则表达方言。
当make
的目的是告诉你什么时候失败时,有一个脚本告诉你“失败”是没有意义的。
计算匹配数是否为零是一个愚蠢的反模式。只需检查是否有任何匹配。大多数正则表达式工具将在找不到匹配时以非零结果代码退出,这正是make
一直关注的问题(虽然sed
实际上并没有这样做;但我们在这里并不需要sed
)。
validate: ${TEX_FILENAME}
grep -q -v -e '^[[:space:]]*$$' -e '^[[:space:]]*%' $<
如果make
没有停止,则该文件有效。如果您害怕忘记这是为了什么,也许可以在grep
命令上方添加注释。
如果你想使用Perl正则表达式,也许看看你的系统是否有grep -P
(但是要明白这是不可移植的)或者只是在Perl中重写它。
以上是关于如何在makefile中验证非空行和非注释行的文件的主要内容,如果未能解决你的问题,请参考以下文章