检查bash中是否存在git branch:奇怪的插值行为

Jon*_*ard 4 git bash shell git-branch

我正在尝试查看shell脚本中是否存在某个分支.

但是,git-branch插值时似乎修改了它的输出.(我不知道这里的确切现象或术语)

例如,我正在尝试获取分支数组:

$ git branch
  develop
* master

$ branches=`git branch`
$ echo $branches
develop compiler.sh HOSTNAME index.html master

$ echo `git branch`
develop compiler.sh HOSTNAME index.html master
Run Code Online (Sandbox Code Playgroud)

一种ls-files似乎正在阻碍.怎么会?这是Bash吗?Git的?我糊涂了.

pje*_*pje 6

输出git branch包含*字符,表示您当前的分支:

$ git branch
develop
*  master
Run Code Online (Sandbox Code Playgroud)

echo *在shell中运行将打印工作目录的全局:

compiler.sh HOSTNAME index.html
Run Code Online (Sandbox Code Playgroud)

因此,您的原始问题就出现了,因为在扩展之后,您实际上正在运行echo develop * master.

为了避免这种目录通配行为,您可以branches在以下期间强引用echo:

$ branches=`git branch`
$ echo "$branches"
develop
*  master
Run Code Online (Sandbox Code Playgroud)