Questions tagged «associative-array»

5
BASH关联数组打印
有没有办法在不循环所有元素的情况下打印整个数组([key] = value)? 假设我创建了一个包含一些元素的数组: declare -A array array=([a1]=1 [a2]=2 ... [b1]=bbb ... [f500]=abcdef) 我可以打印出整个阵列 for i in "${!array[@]}" do echo "${i}=${array[$i]}" done 但是,bash似乎已经知道如何一次“获取”所有数组元素-键${!array[@]}和值${array[@]}。 有没有一种方法可以使bash在不循环的情况下打印此信息? 编辑: typeset -p array做到了! 但是我不能一次删除前缀和后缀: a="$(typeset -p array)" b="${a##*(}" c="${b%% )*}" 有没有更干净的方法来获取/打印输出的键=值部分?

4
Shell脚本中的关联数组
我看到了在Shell脚本中实现关联数组的技巧。例如print array["apples"],可以编写为echo \$array$keykey = apples。 但是,没有提到如何生成用于遍历数组的密钥。我能想到的唯一方法是将键存储在以空格分隔的变量中,以便可以使用for循环遍历数组。 因此,还有其他方法可以存储密钥以供以后使用吗?

1
将关联数组作为参数列表传递给脚本
在脚本中,我有一个类似的关联数组: 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 …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.