bash - 当 gofmt 建议更改时,让 gofmt 以退出状态 1 退出?

标签 bash go gofmt

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

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

我查看了文档,但找不到相应的命令行选项。有 bash hack 吗?

最佳答案

您只需要通过检查 wc -l 的输出是否为空来确保 gofmt 是否再列出一行输出,然后运行二进制 false 将调用的 shell 的退出代码设置为 1 或使用 exit 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 条件依赖于 gofmt 返回的退出代码,因为 0 表示命令成功,条件将断言一个真实的。

关于bash - 当 gofmt 建议更改时,让 gofmt 以退出状态 1 退出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55967709/

相关文章:

struct - 是否可以将先前声明的函数绑定(bind)到结构?

go - 在测试 golang 的 println 和 fmt.println 时需要帮助

SublimeText 中的 Gofmt 插件未找到 GOPATH 错误

bash - 如何删除生成文件中的 1 个字符

bash - 在 Bash 中,cd ./someDir 和 cd someDir 之间有什么实际区别吗?

linux - 逐行读入文件并在另一个文件中搜索部分匹配的行

Go:获取两个极限之间的所有数字/字母范围

linux - 使用 Last 和 tr 剪切行和列

amazon-web-services - 使用多个键更新 dynamodb golang

go - 如何打印反斜杠?