我正在尝试从Makefile自动运行命令:
make lint:
pylint --rcfile=.pylintrc --disable=R,C,W1203,W0702,W0621 main.py || pylint-exit $?
然后运行命令:
make lint
我得到以下错误-
用法:pylint exit[-h][-efail][-wfail][-rfail][-cfail]PYLINTRCmake:***[Makefile:6:lint]错误1
可能是因为shell在命令末尾需要一个整数,但没有因为它不识别$?符号。
如果我直接运行与bash命令相同的命令:
pylint --rcfile=.pylintrc --disable=R,C,W1203,W0702,W0621 main.py || pylint-exit $?
一切按预期运行:
main.py:5:0:W0611:未使用的numpy作为np(未使用的导入(导入
------------------------------------------------------------------您的代码评级为9.76/10(上次运行:9.76/10,+0.00(
引发了以下消息:
- 发出警告消息
未检测到致命消息。正在优雅地退出。。。
有没有解决这种行为的方法?我想这是Makefiles中通配符处理方式的问题。
谢谢!
$
既是make元字符,也是shell元字符。你需要逃离它,所以make忽略它并将它传递给shell。
pylint --rcfile=.pylintrc --disable=R,C,W1203,W0702,W0621 main.py || pylint-exit $$?
$?
是make
参数扩展。您希望通过加倍$
,将$?
直接传递给执行pylint-exit
的shell。
make lint:
pylint --rcfile=.pylintrc --disable=R,C,W1203,W0702,W0621 main.py ||
pylint-exit $$?