首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检查bash中是否存在git分支:奇怪的插值行为

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

Stack Overflow用户
提问于 2012-11-08 07:27:24
回答 2查看 846关注 0票数 4

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

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

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

代码语言:javascript
复制
$ 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似乎正在成为一种障碍。怎么会这样?是巴什吗?Git?我很困惑。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-08 07:44:15

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

代码语言:javascript
复制
$ git branch
develop
*  master

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

代码语言:javascript
复制
compiler.sh HOSTNAME index.html

所以你最初的问题出现了,因为在扩展之后,你实际上是在运行echo develop * master

要避免这种目录全局行为,您可以在echo期间使用强引号branches

代码语言:javascript
复制
$ branches=`git branch`
$ echo "$branches"
develop
*  master
票数 6
EN

Stack Overflow用户

发布于 2012-11-08 07:30:07

试着这样做:

代码语言:javascript
复制
branches=$(git branch | sed 's/\(\*| \)//g')

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13280077

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档