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
,则可以使用 =
或 ==
进行字符串比较,因此解决问题的一种方法是更改 sh
到 bash
在你的命令中。这是因为,对于 bash
,test
命令(您的命令中的 [ ... ]
)是支持两种比较的内置命令。
您正在使用的 shell 没有相同的内置命令,并且正在使用系统 test
命令,该命令只有 =
作为字符串比较。因此,您的问题的另一种解决方案是将命令中的 ==
更改为 =
。
我正在使用 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
,则可以使用 =
或 ==
进行字符串比较,因此解决问题的一种方法是更改 sh
到 bash
在你的命令中。这是因为,对于 bash
,test
命令(您的命令中的 [ ... ]
)是支持两种比较的内置命令。
您正在使用的 shell 没有相同的内置命令,并且正在使用系统 test
命令,该命令只有 =
作为字符串比较。因此,您的问题的另一种解决方案是将命令中的 ==
更改为 =
。