从包含双引号的数组中扩展参数

bib*_*ann 4 arrays bash quotes

我想调用一个带有从 bash 中的数组构建的参数的程序。

我想要 bash 调用:

echo -arg1=simple -arg2="some spaces"
Run Code Online (Sandbox Code Playgroud)

来自array=(echo -arg1=simple "-arg2=\"some spaces\"")或类似(我可以调整项目的创建方式)。

问题

使用"${array[@]}"bash 调用:

echo -arg1=simple '-arg2="some spaces"'
Run Code Online (Sandbox Code Playgroud)

但我不想要单引号。如何正确构建和扩展数组?

示例代码

#!/bin/bash
set -x

array=()
array+=(echo)
array+=(-arg1=simple)
array+=("-arg2=\"some spaces\"")

"${array[@]}"
"${array[*]}"
${array[@]}
${array[*]}
Run Code Online (Sandbox Code Playgroud)

结果调用

echo -arg1=simple '-arg2="some spaces"'
'echo -arg1=simple -arg2="some spaces"'
echo -arg1=simple '-arg2="some' 'spaces"'
echo -arg1=simple '-arg2="some' 'spaces"'
Run Code Online (Sandbox Code Playgroud)

che*_*ner 5

"${array[@]}"是正确的。该-x选项只是选择一种规范的方式来显示需要引用的值,并且'-arg2="some spaces"'相当于"-arg2=\"some spaces\"".