在脚本中,我有一个关联数组,例如:
declare -A VARS=( ["key1"]="value1" ["key2"]="value" )
是否有一个命令可以将其转换为表单中的参数列表
--key1=value1 --key2=value2
无需手动重写
--key1="${VARS[key1]}" --key2="${VARS[key2]}"
我想到的用例是将数组作为参数列表传递给脚本,例如
my_script.sh $(to_param_list $VARS)
为了扩展我对@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[@]}"
但是,我已经使用包内的一个非常简单的安装程序脚本测试了参数传递:
while ! -z "$1" ; do
echo "$1"
shift
done
并传递一个数组,如:
installer_param_array=( ["upgrade-from"]="19 .2.0" ["upgrade-to"]="19.3.0" )
导致此输出:
--upgrade-to=19.3.0
--upgrade-from=19
.2.0