MAG*_*Gx2 2 regex git bash git-branch
我试图从我的git repo中获取git branches -a匹配regex(grep xxx)的所有分支().
通常在命令行中我写这个:
git branch -a | grep xxx
Run Code Online (Sandbox Code Playgroud)
所以我试图在.sh文件中做同样的事情:
以下是我的代码:
#!/bin/bash
branches=( $(git branch -a | grep $1) )
echo branches : $branches
echo branch : ${branches[0]}
Run Code Online (Sandbox Code Playgroud)
可悲的是,它以某种方式添加了当前文件夹中的所有文件.
这是输出:
$> checkout.sh 2887
branches : ant
branch : ant
Run Code Online (Sandbox Code Playgroud)
如果我branches=( $(git branch -a | grep $1) )改为branches=$(git branch -a | grep $1)我最后得到了我的目录和分支中的所有文件
Etan在评论中采用了简单的方法.
您可能会发生错误,因为您没有引用$1,所以如果您传递带有通配符(如script 'release-.*')的正则表达式,shell将在将其移交给之前检查该变量grep- 单词拆分和文件名扩展将会发生.你必须引用变量,只要你不绝对控制的内容.
此外,没有理由将结果存储在数组中以获取第一个结果,让我们grep处理:
first_match=$( git branch -a | grep -m 1 "$1" )
Run Code Online (Sandbox Code Playgroud)
但是用 git branch -a --list pattern