如何推迟打印错误直到每次执行

时间:2019-05-31 00:43:51

标签: bash

当前,我遍历.py目录中的每个/文件。对于每次迭代,我都会调用pycodestyle并在看到错误后立即退出。

  1. 但是我想查看每个文件的所有错误消息,即使文件中的任何一个在<<之前有错误,这也可以帮助开发人员查看他/她应更改哪些行才能通过测试(掉毛)

  2. 如果没有文件打印错误,请不要打印错误。 <<这对我的Jenkins管道很有用。

    for file in $(find /-type d -name test -prune -o -type f -name '*.py' -print); do
        filename=$(basename $file)
        if [[ $filename != "__init__.py" ]] ; then
            echo "$file"
            pycodestyle "${file}" || exit 1 <<< This causes an error.
                       << If it passes the linting, it doesn't exit. 
        fi
    done
    

我的解决方案:

以某种方式,我需要一个布尔局部变量来显示它是否显示错误。最后,我可以检查变量并返回退出与否。但是我不知道该怎么实现...谢谢!

1 个答案:

答案 0 :(得分:2)

设置一个变量,而不是退出,最后对它进行测试,以便以正确的状态退出。

status=0
for file in $(find /-type d -name test -prune -o -type f -name '*.py' ! -name '__init__.py' -print); do
    echo "$file"
    pycodestyle "${file}" || status=1
done
exit "$status"

此外,您可以在__init__.py命令中过滤掉find,因此不需要if(我在Exclude a certain directory while (find command) - BASH中向您展示了相同的内容)。

另外,请参见Why is looping over find's output bad practice?