是否可以强制 bash 对其值包含引号的变量进行就地扩展?

Is it possible to force bash to do an in-place expansion of a variable whose value contains quotes?

考虑以下简单函数。

X() {
 echo ""
 echo ""
 echo ""
}

现在考虑以下变量:

args="-H 'h1 : v1'"

当我 运行 命令 X $args 时,我得到以下输出:

-H
'h1
:

另一方面,如果我 运行 命令 X -H 'h1 : v1',我得到以下输出:

-H
h1 : v1

请注意,在后一种情况下,变量值 内的 引号被正确解释为分隔符。

是否可以修改变量的声明或使用变量的调用以强制上述两个输出相等?

这就是数组的用途。

$ args=(-H 'h1: v1')
$ printf '%s\n' "${args[@]}"
-H
h1 : v1