小编Mat*_*ari的帖子

将关联数组作为参数列表传递给脚本

在脚本中,我有一个关联数组,例如:

declare -A VARS=( ["key1"]="value1" ["key2"]="value" )
Run Code Online (Sandbox Code Playgroud)

是否有一个命令可以将其转换为表单中的参数列表

--key1=value1 --key2=value2
Run Code Online (Sandbox Code Playgroud)

无需手动重写

 --key1="${VARS[key1]}" --key2="${VARS[key2]}"
Run Code Online (Sandbox Code Playgroud)

我想到的用例是将数组作为参数列表传递给脚本,例如

my_script.sh $(to_param_list $VARS)
Run Code Online (Sandbox Code Playgroud)

为了扩展我对@Kusalananda 答案所做的评论,我的确切用例如下:我有一个脚本,用于使用 makeself 构建自解压安装程序,并且该脚本接收一些要分开的参数:

  • 脚本本身的参数
  • 自解压安装程序中安装程序的参数

然后脚本会像这样构建安装程序:

to_param_list installer_param_list installer_param_array
./makeself ./path/to/sourcedir ./path/to/created/installer "My installer" ./path/to/install/inside/package "${installer_param_list[@]}"
Run Code Online (Sandbox Code Playgroud)

但是,我已经使用包内的一个非常简单的安装程序脚本测试了参数传递:

while ! -z "$1" ; do
    echo "$1"
    shift
done
Run Code Online (Sandbox Code Playgroud)

并传递一个数组,如:

installer_param_array=( ["upgrade-from"]="19 .2.0" ["upgrade-to"]="19.3.0" )
Run Code Online (Sandbox Code Playgroud)

导致此输出:

--upgrade-to=19.3.0
--upgrade-from=19
.2.0
Run Code Online (Sandbox Code Playgroud)

bash parameter associative-array

10
推荐指数
1
解决办法
2593
查看次数

标签 统计

associative-array ×1

bash ×1

parameter ×1