繁体   English   中英

将字符串作为参数发送到bash脚本以使用Git Alias自动化Git命令

[英]Sending strings as parameter to bash script to automate Git commands using Git Alias

我有一个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

问题是$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"

我设法解决了这个问题。 显然,这是由另一个用户指出的不正确的`if [$ 2 = 1]引起的。

下面显示的新代码按预期工作。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM