在Mac OS Sierra上执行git init创建仓库时出现整数表达式错误
git init触发的bash test错误 嘿,我来帮你搞定这个问题!首先得明确:这些-bash: test: ... integer expression expected错误不是git init本身的问题,而是你的bash shell配置里的某个脚本(大概率是用来显示git分支的命令行提示符脚本)写错了逻辑——里面的test命令在做整数比较,但传入了字符串值(比如master、on这类分支或状态字符串),所以触发了报错。
下面是具体的排查和修复步骤:
先验证问题根源:
临时重置你的命令行提示符,执行:PS1="$ "然后再运行
git init,如果这时候没有报错了,那百分百是自定义提示符的配置出了问题。定位错误的配置文件:
Mac上bash的配置文件通常是~/.bash_profile、~/.bashrc,如果你用了专门的git提示符脚本,可能还有~/.git-prompt.sh。打开这些文件,搜索包含test或者[(test和[是等价命令)的行,重点找用了整数比较符的代码——比如-eq、-gt、-lt这些,它们只能用来比较数字,但被错误地用来比较字符串了。举个典型的错误例子:
if [ $GIT_BRANCH -eq master ]这里
-eq是整数相等判断,但$GIT_BRANCH是字符串(比如master),所以会触发报错。修复错误逻辑:
把所有用整数比较符处理字符串的地方,换成字符串比较的写法,记得给变量加双引号避免空格问题:# 错误写法 if [ $GIT_BRANCH -eq master ] # 正确写法 if [ "$GIT_BRANCH" = "master" ]或者用
==(bash兼容):if [ "$GIT_BRANCH" == "master" ]如果找不到错误行,用调试模式定位:
执行下面的命令,bash会输出每一步执行的命令,帮你找到具体哪一行脚本出了问题:bash -x -c 'git init'验证修复结果:
保存修改后的配置文件,执行source ~/.bash_profile(或者对应的配置文件),然后再运行git init,应该就不会再出现那些错误了。
内容的提问来源于stack exchange,提问作者marioernestoms

