我想将 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/