为什么git branch和$(git branch)输出不同的结果

Tuo*_*nen 2 unix git bash shell version-control

我正在尝试制作一个bash脚本,该脚本将在其他分支的当前分支之前打印提交。但是,当我git branch在子shell中执行命令时,不仅获得分支名称,还获得当前目录中的文件和文件夹列表。为什么呼叫的$(git branch)行为方式如此?

use*_*001 5

这不是命令替代,而是引号。这是git branch回购的结果:

$ git branch
  5-job-test-fails
* master
  revisions
  with_cool_background
Run Code Online (Sandbox Code Playgroud)

注意星号。

当您编写时echo $(git branch),由于不带引号,因此星号将扩展到当前目录中的文件:

$ echo $(git branch)
5-job-test-fails app bin cable config config.ru db erd.pdf Gemfile Gemfile.lock Guardfile lib log public Rakefile README.rdoc test tmp vendor master revisions with_cool_background
Run Code Online (Sandbox Code Playgroud)

为了克服这个问题,请引用以下参数:

$ echo "$(git branch)"
  5-job-test-fails
* master
  revisions
  with_cool_background
Run Code Online (Sandbox Code Playgroud)