我有以下代码可以pylint
在带有文件扩展名的 Git 存储库中的所有文件上运行.py
,由命令替换提供。
pylint $(git ls-files '*.py')
该脚本运行得很好,除非没有与该模式匹配的文件。但是,该pylint
实用程序在没有文件的情况下被调用时会给出详细的帮助消息,这不是我想要的——我根本不想调用pylint
。
那么,在调用之前,我能否就如何最好地测试是否有任何文件与文件名模式匹配寻求一些帮助pylint
?
我是一个pylint
新手bash
。
根本不要使用命令替换。相反,使用管道将数据从
git ls-files
to传递给并在生成的文件列表上运行:xargs
xargs
pylint
这会将文件列表从
git
命令传递到 -xargs
分隔\0
列表。该xargs
实用程序将pylint
使用从 读取的名称运行git
,但-r
如果列表为空,它将不会运行该实用程序。这解决了三个问题:
\0
-delimited 列表传递,它支持名称包含换行符和其他空格的文件。pylint
在尽可能多的文件上运行,我们能够处理git ls-files
产生大量数据以致使用命令替换会因“参数列表太长”而失败的情况。pylint
如果列表为空,它不会运行。此答案假定使用
xargs
具有非标准(但常见)选项-0
和-r
.