4

我想将 gofmt 添加到 CI/CD 管道中。如果它产生更改,我希望 gofmt 以状态 1 退出。

例如,如果我运行gofmt -s -l .并且列出了一些文件。我希望它以状态 1 退出。现在当我运行时echo $?给我 0,即使列出了一些带有 gofmt 更改的文件。

我检查了文档,找不到相应的命令行选项。有没有 bash hack 可以做到这一点?

4

2 回答 2

4

您只需要通过检查输出是否为非空来确保gofmt列出多行输出,然后运行将退出代码设置为调用的 shell 或用于显式退出脚本的二进制文件。wc -lfalse1exit 1

if [ "$(gofmt -s -l . | wc -l)" -gt 0 ]; then
    exit 1
fi

当您说即使列出了文件也gofmt实际返回$?时?,在这种情况下,您也可以简单地做0

if gofmt -s -l . > /dev/null; then
    exit 1
fi

上述if条件依赖于gofmtas返回的退出代码,0表明命令成功,条件将断言为真。

于 2019-05-03T10:20:43.607 回答
1

You can use

test -z $(gofmt -l .)
于 2021-06-13T21:04:55.060 回答