在shell脚本里面,bash虽然对数组元素个数没有限制,但其只支持一维数组。不过可以使用一些小技巧来模拟二维数组。其实二维数组在本质上等同于一维数组,只不过增加了使用行和列的未知来引用和操作元素的寻址模式。下面我通过几个简单列子演示一下。

实验一:

#!/bin/bash
#
#初始化定义三个数组
arry1=(A B C)
arry2=(D E F)
arry3=(G H I)
#
#使用for循环来读取数组中元素的个数,每次读取完一个数组将其打印到屏幕上并继续读取
for ((i=0;i<4;i++))
   do
     eval value=\${arry${i}[@]}
      for element in ${value}
         do
           echo -e ${value}
           continue 2
         done
    done
echo
exit 0

运行结果:

shell脚本之模拟二维数组_第1张图片

实验二:

#!/bin/bash
#
#定义三个一维数组
array1="A B C"
array2="D E F"
array3="G H I"
#
#使用for语句来循环读取所定义的数组中的元素并暂存到变量i中
#将暂存在变量i中的元素赋予变量value
#使用for语句读取变量value中的值 每次读取完后都打印到标准输出直到读取完成
for i in array1 array2 array3
   do
     eval value=\$$i
      for j in $value
         do
          echo -e $value
          continue 2
      done
done
echo
exit 0

运行结果:

shell脚本之模拟二维数组_第2张图片

试验三(使用函数来实现模拟二维数组):

#!/bin/bash
#
#初始化第一个数组
array2=(
   element2
   element3
   element4
)
#初始化第二个数组
array3=(
   element5 element6 element7
)
#定义一个函数 将所定义的两个一维数组组合成一个二维数组并显示到屏幕上
ARRAY()
{
  echo
  echo ">>Two-dimensional array<<"
  echo
  echo "${array2[*]}"
  echo "${array3[*]}"
}
#
ARRAY
echo
exit 0

运行结果:

shell脚本之模拟二维数组_第3张图片

实验四(使用循环来模拟):

#!/bin/bash
#
declare -i j=0
declare -i limit=4
#
#初始化一个一维数组
array=(34 35 36 37 38 39)
#
echo "Two-dimensional array"
#使用while循环完成对一维数组元素的读取 并将读取的元素重新组成一个二维数组后输出
while [ $j -lt $limit ]
    do
#对数组array中的元素每次都从第$j个元素开始读取且读取的数目为3
      echo "${array[*]:$j:3}"       
      let j+=2
      let j++
done
echo
exit 0

运行结果:

shell脚本之模拟二维数组_第4张图片

以上就是我模拟的几个列子 还请多多指教w_0014.gif