在shell脚本里面,bash虽然对数组元素个数没有限制,但其只支持一维数组。不过能够使用一些小技巧来模拟二维数组。其实二维数组在本质上等同于一维数组,只不过增长了使用行和列的未知来引用和操做元素的寻址模式。下面我经过几个简单列子演示一下。
shell
实验一:数组
#!/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
运行结果:bash
实验二:ide
#!/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
运行结果:函数
试验三(使用函数来实现模拟二维数组):spa
#!/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
运行结果:blog
实验四(使用循环来模拟):element
#!/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
运行结果:get