创建函数时如何在bash中的双引号之间传递句子
我正在尝试创建一个别名,它是git commit-m“commit message”的缩写 我试图在下面的创建函数时如何在bash中的双引号之间传递句子,bash,zsh,Bash,Zsh,我正在尝试创建一个别名,它是git commit-m“commit message”的缩写 我试图在下面的~/.alias中创建一个函数 gc() { git commit -m ""$@"" } 当我使用此“别名”gc安装项目时,会显示此错误消息 error: pathspec 'install' did not match any file(s) known to git. error: pathspec 'project' did not match any file(s) kn
~/.alias
中创建一个函数
gc()
{
git commit -m ""$@""
}
当我使用此“别名”gc安装项目时,会显示此错误消息
error: pathspec 'install' did not match any file(s) known to git.
error: pathspec 'project' did not match any file(s) known to git.
而我希望它是git commit-m“install project”
如何使此别名按我所希望的方式工作?因为目标是将
gc
的所有参数组合成一个字符串,用作-m
的参数,所以您希望使用$*
,而不是$@
。此外,您不需要指定引号。在git commit-m“install project”
中,引号不是参数的一部分;他们只是在那里指示bash
安装项目是一个单词,而不是两个单独的单词,作为参数传递给git
gc () {
git commit -m "$*"
}
但是,我鼓励您负责将一个正确引用的参数传递给gc
,这样您就不必担心shell将如何处理$
,*
等字符
gc () {
git commit -m "$1"
}
gc "install my *awesome* project"