我正在尝试编写一个脚本:env PYTHONPATH=$PYTHONPATH: $Dir/scripts find * -name ‘*.py' -exec pylint (} \; | grep . && exit 1
代码在根目录中查找所有脚本,而不是使用我设置的环境变量。关于编写此代码以仅查找我在PYTHONPATH中设置为值的目录中的文件的任何帮助。
env PYTHONPATH=$PYTHONPATH: $Dir/scripts
没有做你认为它正在做的事情。包括$PYTHONPATH
包括PYTHONPATH
的前一个值,这意味着它已经设置为任何值或为空默认值。变量中的空格也使其无效,而是将$Dir/scripts
解释为一个新命令。看起来你想要的是env PYTHONPATH=$Dir/scripts
——但实际上有一种更简单的方法。
如果您的目录中有__init__.py
文件,您可以只执行pylint ./some-directory
。如果没有,可以使用xargs
:find . -type f -name "*.py" | xargs pylint
。如果你想传递目录,而不是将其编码为.
(你当前的调用目录(,你也可以这样做:
# set directory to first argument
dir="$1"
# check if "dir" was actually provided, if not, set to `.`
if [ -z "$dir" ]; then dir=.; fi
find "$dir" -type f -name "*.py" | xargs pylint
你可以把它保存在一个脚本或函数中,然后用一个目录(比如run-pylint-on-everything.sh ~/foo/bar
,或者不这样(调用它,在这种情况下,它将从你当前的shell位置开始运行
PYTHONPATH值之间没有空格,这是一个拼写错误,我想在CLI而不是脚本上运行该命令。