【问题标题】:How to define a multi-dimensional array in a unix shell script [duplicate]如何在unix shell脚本中定义多维数组[重复]
【发布时间】:2026-02-20 15:15:02
【问题描述】:

如何在 unix shell 脚本中实现多维数组? 该解决方案不仅适用于 bash,也适用于其他 unix shell。

对于 bash,有一个类似的问题。我在那里发布了相同的答案,但我想以更通用的方式重新提出问题,这样不仅寻找 bash 解决方案的用户也能得到答案。

【问题讨论】:

标签: arrays bash unix sh ksh


【解决方案1】:

独立于所使用的外壳(sh、ksh、bash、...),以下方法对于 n 维数组非常有效(示例涵盖二维数组)。

在示例中,行分隔符(第一维)是空格字符。为了引入字段分隔符(第二维),使用标准 unix 工具 tr。附加维度的附加分隔符可以以相同的方式使用。

当然这种方法的性能不是很好,但如果性能不是标准,这种方法是相当通用的,可以解决很多问题:

array2d="1.1:1.2:1.3 2.1:2.2 3.1:3.2:3.3:3.4"

function process2ndDimension {
    for dimension2 in $*
    do
        echo -n $dimension2 "   "
    done
    echo
}

function process1stDimension {
    for dimension1 in $array2d
    do
        process2ndDimension `echo $dimension1 | tr : " "`
    done
}

process1stDimension

该样本的输出如下所示:

1.1     1.2     1.3     
2.1     2.2     
3.1     3.2     3.3     3.4 

【讨论】: