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

时间:2020-01-21 09:21:30

标签: bash git subshell git-bisect

我正在使用git bisect来查找VERSION文件已从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以外的其他工具,但我真的很想这样做。

1 个答案:

答案 0 :(得分:1)

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

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

相关问题