通过脚本间接运行命令时的不同结果

2024-06-01 06:43:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在虚拟环境下使用^{}

直接运行pylint时,我得到以下输出

$ pylint src/**/*.py
************* Module main
src/main.py:1:0: C0114: Missing module docstring (missing-module-docstring)
src/main.py:3:0: C0116: Missing function or method docstring (missing-function-docstring)

------------------------------------------------------------------
Your code has been rated at 5.00/10 (previous run: 5.00/10, +0.00)

当相同的命令包装在bash脚本中时,执行bash脚本会产生不同的输出

$ $SHELL --version | head -n 1
GNU bash, version 5.0.18(1)-release (x86_64-apple-darwin19.5.0)

$ which $SHELL
/usr/local/bin/bash

$ cat lint.sh
#!/usr/local/bin/bash
pylint *.py src/**/*.py

$ ./lint.sh
************* Module src/**/*.py
src/**/*.py:1:0: F0001: No module named src/**/*.py (fatal)

--------------------------------------------------------------------
Your code has been rated at 10.00/10 (previous run: 10.00/10, +0.00)

如果lint.shsrc目录位于同一(根)目录中,则lint.sh中的src/**/*.py是正确的

下面是有关执行环境的更多信息

$ pylint --version
pylint 2.6.0
astroid 2.4.2
Python 3.8.5 (default, Aug  9 2020, 16:57:39)
[Clang 12.0.0 (clang-1200.0.26.2)]
  1. 为什么直接运行命令会产生与间接运行同一命令不同的输出(在bash脚本中,我的假设是它与pylint直接无关)
  2. 如何修复它,使其能够在bash脚本中运行命令

Tags: py命令src脚本bashmainversionsh
1条回答
网友
1楼 · 发布于 2024-06-01 06:43:50

您正在脚本中使用**。需要激活此功能:

shopt -s globstar
pylint *.py src/**/*.py

很可能,它是在交互式shell中启用的,这就是它在那里工作的原因。您可以通过执行以下操作来查询其设置:

shopt globstar

相关问题 更多 >