小编bib*_*ann的帖子

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

我想调用一个带有从 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)

arrays bash quotes

4
推荐指数
1
解决办法
1892
查看次数

标签 统计

arrays ×1

bash ×1

quotes ×1