如何将参数传递给命令替换?

如何将参数传递给命令替换?

我想通过编号更改 git 分支

为了显示分支编号,我使用这个(带别名):

$ git br | nl
     1  * master
     2    test

现在我想通过分支编号获取分支名称并将其传递给 git checkout:

echo $(git branch | sed "s|[* ]||g;$1q;d") | xargs git checkout

但是假设它有一个别名,如何将“$1”从参数传递给这个命令?

预期行为:

alias checkout='echo $(git branch | sed "s|[* ]||g;$1q;d") | xargs git checkout'
checkout 2 # checkout to branch test

答案1

我自己找到了一个解决方案博客文章

我用函数包装了我之前的代码并放在别名中,所以我的代码.gitconfig看起来像:

[alias]
  br = "!git branch | nl"
  chbr = "!f() { MY_BRANCH=$(git branch | sed \"s|[* ]||g;$1q;d\"); git checkout $MY_BRANCH; }; f"

现在我可以做如下事情:

$ git br
     1  * master
     2    test

$ git chbr 2
Switched to branch 'test'

相关内容