我正在使用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以外的其他工具,但我真的很想这样做。
答案 0 :(得分:1)
如果您使用的是bash
,则可以使用=
或==
进行字符串比较,因此解决此问题的一种方法是更改sh
到命令中的bash
。这是因为,对于bash
来说,test
命令(您命令中的[ ... ]
)是支持两个比较的内置命令。
您使用的Shell没有相同的内置命令,并且正在使用系统test
命令,该命令仅包含=
作为字符串比较。因此,解决问题的另一种方法是在命令中将==
更改为=
。