我通过shell传参的方式设置git别名为啥不管用?

作者站长头像
站长
· 阅读数 14

我想设置一个查看分支的描述的命令,查找后,通过shell的方式设置,目前不报错,但是只是返回当前分支名,没有返回分支描述

git config --global alias.desc "! f() { if [ -z $1 ];then currBra=`git symbolic-ref -q --short HEAD`;else currBra=$1;fi;git config branch.$currBra.description; }; f "

有懂的大神帮忙看下哪出错了?

回复
1个回答
avatar
test
2024-07-16

solution

将双引号改成单引号。

git config --global alias.desc '! f() { if [ -z $1 ];then currBra=`git symbolic-ref -q --short HEAD`;else currBra=$1;fi;git config branch.$currBra.description; }; f '

原因

如果是双引号,因为你是在 shell 中执行的,$1 会被当成变量解析成字符串。

执行 git config --global alias.desc 查看,你会看到 $1 消失,得到的结果为:

! f() { if [ -z  ];then currBra=developer;else currBra=;fi;git config branch..description; }; f

例如下面这段脚本,得到的结果为 v=123

v=123; echo "v=$v"

如果是以文件的方式配置就不会出现这个问题。

回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容