首页 > 解决方案 > 是否可以强制 bash 对其值包含引号的变量进行就地扩展?

问题描述

考虑以下简单函数。

X() {
 echo "$1"
 echo "$2"
 echo "$3"
}

现在考虑以下变量:

args="-H 'h1 : v1'"

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

-H
'h1
:

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

-H
h1 : v1

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

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

标签: bashenvironment-variablescommand-line-arguments

解决方案


这就是数组的用途。

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

推荐阅读