bash - 将字符串作为参数发送到 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
解决方案
问题是它没有$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"
推荐阅读
- reporting-services - 如果组字段小计为零,SSRS 如何隐藏详细信息
- neo4j - 提高查询计数的性能
- python - Python:无论客户端是否连接到它,都在特定时间后关闭套接字
- windows - evntwin evntcmd 和事件查看器
- ios - 处理本地通知点击 Xamarin Forms iOS
- javascript - 如何在 Node.js 服务器上部署 Vue.js 应用程序
- php - Laravel 签名路由在生产中抛出 InvalidSignatureException
- tensorflow - 如何处理神经网络中并不总是适用的特征?
- c# - 访问 resx 文件时出现 MissingManifestResourceException
- asp.net - 如何判断请求是通过 HTTP 还是 HTTPS 进入的?在 Visual Studio 中