4

我正在尝试查看 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

ls-files似乎有一种阻碍。怎么来的?这是巴什吗?吉特?我很困惑。

4

2 回答 2

6

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

$ git branch
develop
*  master

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

compiler.sh HOSTNAME index.html

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

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

$ branches=`git branch`
$ echo "$branches"
develop
*  master
于 2012-11-07T23:44:14.790 回答
3

尝试这样做:

branches=$(git branch | sed 's/\(\*| \)//g')

我推荐你使用sed,因为*字符是globshell,所以它扩展到当前目录中的所有文件和目录。此外,我删除了不需要的额外空格。

于 2012-11-07T23:30:06.660 回答