git bisect 运行 脚本中的测试命令不起作用

Test command inside git bisect run script doesn't work

我正在使用 git bisect 找出版本文件已从 0.0.1_testing 更改为较新版本的版本,我想像这样使用 bisect run .

git bisect run sh -c 'if [ "$(cat VERSION)" == "0.0.1_testing" ] ; then exit 0 ; else exit 1 ; fi'

但我一直得到不好的结果和这个错误 sh: 1: [: 0.1.0: unexpected operator(0.1.0 是 "$(cat VERSION)" 返回。我假设这是因为当子 shell 退出时,bisect 使用它的退出值并且甚至没有通过脚本的其余部分。

有没有办法让它工作?或者一些好的选择?我知道我可以使用除 bisect 之外的其他工具,但我真的很想这样做。

如果您使用的是 bash,则可以使用 === 进行字符串比较,因此解决问题的一种方法是更改​​ shbash 在你的命令中。这是因为,对于 bashtest 命令(您的命令中的 [ ... ])是支持两种比较的内置命令。

您正在使用的 shell 没有相同的内置命令,并且正在使用系统 test 命令,该命令只有 = 作为字符串比较。因此,您的问题的另一种解决方案是将命令中的 == 更改为 =