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

时间:2016-09-18 07:46:56

标签: git bash shell unix version-control

我正在尝试创建一个bash脚本,它将在其他分支中的当前分支之前打印提交。但是,当我在子shell中执行命令git branch时,我不仅获得了分支名称,还获得了当前目录中的文件和文件夹列表。为什么调用$(git branch)会这样?

1 个答案:

答案 0 :(得分:4)

这不是命令替换,而是引用。以下是回购邮件git branch的结果:

$ git branch
  5-job-test-fails
* master
  revisions
  with_cool_background

注意问号。

当您编写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

为了解决这个问题,引用一下这个论点:

$ echo "$(git branch)"
  5-job-test-fails
* master
  revisions
  with_cool_background