如何在unix shell脚本中实现多维数组? 该解决方案不仅适用于bash,也适用于其他unix shell。
bash有一个类似的问题。我在那里发布了相同的答案,但我想以更通用的方式重新提问,这样不仅是寻找bash解决方案的用户都能得到答案。
答案 0 :(得分:2)
独立于所使用的shell(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