bash:根据旧数组在新数组中分配“key - > value”

时间:2011-09-07 09:46:48

标签: arrays bash

我有一个数组:

old_array=("color" "red" "shape" "circle" "vote" "10")

(交替键/值)

我需要构建一个new_array,以便:

echo $new_array[color]
red

echo $new_array[shape]
circle

等等。

1 个答案:

答案 0 :(得分:3)

你需要bash的关联数组。

首先,将变量声明为Associative Array declare -A

declare -A new_array

然后像使用常规数组一样设置数组中的值:

new_array[color]="red"

您可以将old_array转换为new_array,如下所示:

old_array=("color" "red" "shape" "circle" "vote" "10")
declare -A new_array
for (( i = 0; i < ${#old_array[*]}; i += 2 )); do
    key=${old_array[i]}
    value=${old_array[i+1]}
    new_array[$key]=$value
done

您也可以直接编写new_array:

declare -A new_array=([color]=red [shape]=circle [vote]=10)