如何将Shell脚本的多个参数合并为单个字符串用于Git提交
解决gitpush.sh接收空格分隔提交消息的问题
嘿,这个小问题很好解决!不过先提个小细节:你原来的脚本里所有命令都写在一行、没有分隔符,执行的时候git add -u会把后面的git、commit这些当成文件路径处理,这会报错哦~先把命令分开,再解决参数的问题。
你的核心需求是接收空格分隔的多个参数作为提交消息,原来用$1只能捕获第一个参数,后面的内容都丢失了。要把所有传入的参数合并成带空格的字符串,只需要把$1换成"$*"(或者"$@",在这个场景下效果一致)——双引号包裹的$*会完整保留你输入的所有参数,包括它们之间的空格。
修改后的完整脚本如下:
git add -u git commit -m "quick update: $*" git push origin master echo "$*"
简单解释下:
"$*"会将所有传入的命令行参数合并成一个单一的字符串,参数之间用空格分隔- 必须用双引号包裹,否则Shell会把空格解析成参数分隔符,导致提交消息只保留第一个词
- 把每个命令单独成行(或者用分号
;分隔),避免Git把后续命令当成文件路径
现在你就可以直接输入空格分隔的内容啦:
sh gitpush.sh a commit for lala land
提交消息会自动变成quick update: a commit for lala land,完全符合你的需求~
既然你是个人独立开发的小型项目,这种简化用法完全没问题,不用纠结规范😉
内容的提问来源于stack exchange,提问作者George Pamfilis
相关产品推荐
相关产品推荐

