$?当从Makefile运行时被忽略,但当复制粘贴为bash命令时工作正常



我正在尝试从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 $$? 

相关内容

  • 没有找到相关文章