带空格的参数被视为单独的参数而不是一个参数

Arguments with spaces are seen as separate arguments and not as one argument

我有以下功能

func() { shift 2; func2 $@; }
func2() { echo ; echo ; }
func 1 2 "3 3" "4 4"

我预计 func2 会显示 "3 3""4 4"。但是 func2 将这两个 3 视为单独的参数而不是一个参数。

我在这里缺少什么? 如何使 func2 将 "3 3" 视为 arg1 并将 "4 4" 视为 arg2?

您需要在 "$@" 周围使用双引号才能使其正常工作。