首页 > 解决方案 > 将字符串作为参数发送到 bash 脚本以使用 Git Alias 自动执行 Git 命令

问题描述

我有一个 bash 脚本,我已经使用了一段时间来将以下 Git 命令自动化为单个命令,以便于使用:

git add.
git commit -m
git push

该脚本在 .gitconfig 文件中定义为别名。到目前为止它工作得非常好,但我希望能够为其添加一些额外的功能,以便我可以传入两个字符串而不是一个。第一个字符串是 JIRA 票号,第二个是提交消息。在提交被推送到远程之前,代码将被添加到提交消息之前。

我曾尝试更改我的脚本,但现在当我输入三个参数时出现too many arguments错误。我不确定我做错了什么。

!f() 
{ 
    ticketNumber=$1 
    commitmessage=$2
    confirm=$3; 

    if [ $2 = 1 ]; 
    then 
    git add .; 
    git status; 
    git commit -m \"[${ticketNumber}] ${commitmessage}\"; 
    git push; fi 
    }; 
f

例如,以下函数调用会产生错误:

git commitpushthis "JIRA-137" "Test commit message" 1

标签: bashgitshell

解决方案


问题是它没有$2被引用,这意味着你最终会得到一个类似的命令

[ Test commit message = 1 ]

引用$2可以解决这个问题,尽管只有足够长的时间让你意识到你的意思是$3无论如何都要使用。正确的定义似乎是(为简洁起见省略了变量名):

commitpushthis = "!f() { if [ \"$3\" = 1 ]; then git add .; git status; git commit -m \"[${ticketNumber}] ${commitmessage}\"; git push; fi; }; f"

推荐阅读