env命令无法与find命令一起使用



我正在尝试编写一个脚本: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而不是脚本上运行该命令。

最新更新