获取所有匹配正则表达式的git分支并将其拆分为数组

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文件中做同样的事情:

  1. 得到所有匹配正则表达式的分支
  2. 将其拆分为数组
  3. 得到第一个分支

以下是我的代码:

#!/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)我最后得到了我的目录和分支中的所有文件

gle*_*man 5

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