Bash-pass参数与接收参数的方式相同

Bash-pass参数与接收参数的方式相同,bash,Bash,我的hg(mercurial)命令有一个bash别名,如下所示: hg() { if [[ $1 == 'up' ]]; then if [[ $# == 2 ]]; then _update_bookmark $2 else up fi else /bin/hg $@ fi } 我的问题是最后一个else案例。我希望在hg()中收到的参数以完全相同的方式传递给/bin/hg。当我执行类似于hg commit-m“我的消息在这

我的
hg
(mercurial)命令有一个bash别名,如下所示:

hg() {
  if [[ $1 == 'up' ]]; then
    if [[ $# == 2 ]]; then
      _update_bookmark $2
    else
      up
    fi
  else
    /bin/hg $@
  fi
}

我的问题是最后一个
else
案例。我希望在
hg()
中收到的参数以完全相同的方式传递给
/bin/hg
。当我执行类似于
hg commit-m“我的消息在这里”
的操作时,我的问题就会出现,它会作为类似于
/bin/hg commit-m我的消息在这里
的内容进行传递。我尝试了
$@
$*
——不确定哪一个更适合这里,但似乎两者都不起作用。有什么建议吗?

你需要写
“$@”
(带双引号)来防止分词,同时仍然保持已经独立的参数独立。

你需要写
“$@”
(带双引号)来防止分词,同时仍然保持已经独立的参数独立。

还要确保引用
“$2”
还要确保您引用了
“$2”