[英]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.