如何在korn shell中访问关联数组内的元素元素

时间:2017-02-06 14:45:53

标签: arrays shell ksh

我已经开始编写两周的脚本了,现在我正在尝试使用korn shell脚本中的关联数组创建一个3D数组。我尝试了所有可能的组合,我可以想到而不会使脚本很长,但我无法取得任何进展。我试图解决关联数组中的单个元素,我无法做到这一点。我真的很感激任何帮助。

#!/usr/bin/ksh93

typeset -A array_of_array              #array_of_array is associative

array_of_array=([array_index]="A B C D E"
           [A]="AA AAA AAAA"
           [B]="BB BBB BBBB"
           [C]="CC CCC CCCC"
           [D]="DD DDD DDDD"
           [E]="EE EEE EEEE"
          )

print_fun(){
        for INDEX in ${array_of_array["array_index"]};
        do
                echo "$INDEX --->"

                echo ${${array_of_array[$INDEX]}[0]} #this is incorrect instrn

                for ITEMS in ${array_of_array[$INDEX]}
                do
                        echo $'\t\t\t'$ITEMS
                done
        done
}
print_fun

我正在尝试获得这样的输出:

A  --->  AA
         AAA
         AAAA

B  --->  BB
         BBB
         BBBB

C  --->  CC
         CCC
         CCCC

1 个答案:

答案 0 :(得分:3)

您没有阵列数组;你有一个字符串数组

#!/usr/bin/ksh93

typeset -A array_of_array

# This associates another array with each key in the outer array
array_of_array=(
           [A]=(AA AAA AAAA)
           [B]=(BB BBB BBBB)
           [C]=(CC CCC CCCC)
           [D]=(DD DDD DDDD)
           [E]=(EE EEE EEEE)
          )

print_fun(){
        # Use this syntax for iterating over the keys of the outer array
        for INDEX in "${!array_of_array[@]}";
        do
                echo "$INDEX --->"

                # Use this syntax for accessing the elements
                # of the inner array associate with each key
                for ITEMS in "${array_of_array[$INDEX][@]}"
                do
                        echo $'\t\t\t'$ITEMS
                done
        done
}
print_fun