防止用户创建的函数中的引号扩展

防止用户创建的函数中的引号扩展

我有以下 bash 函数:

tg() {
  git add -A && git commit -m $1 && git push
}

但它似乎不起作用:

$ tg "create index for users"
error: pathspec 'index' did not match any file(s) known to git.
error: pathspec 'for' did not match any file(s) known to git.
error: pathspec 'users' did not match any file(s) known to git.

显然,问题是引号被扩展了,我的中间命令被读为git commit -m create index for users而不是git commit -m "create index for users"

我做错了什么 ?我怎样才能解决这个问题 ?

答案1

双引号扩展$1

tg() {
  git add -A &&
  git commit -m "$1" &&
  git push
}

如果不引用$1,shell 将在空格上分割其值( 的内容$IFS),并且生成的单词将另外进行文件名通配。

有关的:

相关内容