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

我想设置一个查看分支的描述的命令,查找后,通过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.6k
1 个回答

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"

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题