1

我正在使用 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 之外的其他工具,但我真的很想这样做。

4

1 回答 1

1

如果您正在使用bash,您将能够使用===进行字符串比较,因此解决问题的一种方法是在您的命令中更改sh为。bash这是因为,对于bash命令test[ ... ]在您的命令中)是一个支持两种比较的内置命令。

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

于 2020-01-21T10:38:17.857 回答