我有这个发现awk行来获取python代码分析::
$ find ./ -name '*.py' -exec wc -l {} \; | sort -n| awk '{print $0}{s+=$0}END{print s}'
12 ./gb/__init__.py
23 ./gb/value_type.py
40 ./setup.py
120 ./gb/libcsv.py
200
$
我尝试将其放在Makefile中::
$ cat Makefile
python_count_lines: clean
@find ./ -name '*.py' -exec wc -l {} \; | sort -n| awk '{print \$0}{s+=\$0}END{print s}'
但这不起作用::
$ make python_count_lines
awk: line 1: syntax error at or near }
Makefile:12: recipe for target 'python_count_lines' failed
make: *** [python_count_lines] Error 2
$
贝特朗·马特尔(Bertrand Martel)是正确的,您需要通过将美元符号加倍而不是在其前面加反斜杠来避免美元符号的产生(请参阅此处的信息)。
但是,该建议的其余部分是不正确的,将不起作用。首先,几乎不要shell
在配方中使用该功能。其次,info
无法在此处使用该函数,因为在第一行中,您已将shell变量设置为RES
等于某个值,然后尝试在第二行中输出make变量RES
;不仅如此,而且每一行都在单独的外壳程序中运行,并且在将配方的任何部分传递到外壳程序之前,所有make变量和函数引用都在前面进行了扩展。
您只需要这样做:
python_count_lines: clean
@find ./ -name '*.py' -exec wc -l {} \; | sort -n| awk '{print $$0}{s+=$$0}END{print s}'
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句