bash脚本不使用多个参数

时间:2011-11-06 11:52:44

标签: git bash command-line-arguments

我正在尝试为git commit提供别名

function gcam() {
  git commit -a -m $@ ;
  git status
}

当我使用gcam 'something'调用命令时,它可以正常工作,但如果消息中间有空格,则gcam 'new commit'会显示消息Paths with -a does not make sense

我正在寻找this solution,但它对我不起作用,因为我使用的是$@而不是$1。为什么要使用$@?就好像我需要向git commit传递一个额外的参数。

任何让它成功的想法?

提前致谢

1 个答案:

答案 0 :(得分:3)

@Mat是对的:您应该双引$@,然后引用该消息。 "$@"扩展为参数列表,每个参数列为一个单独的单词(即,就好像每个参数都被单独引用一样):

function gcam() {
  git commit -a -m "$@"
  git status
}

gcam "commit message" -v

这相当于:

git commit -a -m "commit message" -v
git status