何为数组?数组的特性就是一组数据类型相同的集合(不包括有一些编程语言提出来的关联数组的概念)。那么shell中数组是怎么定义的呢,我们来看两种数据类型:
一是数值类型,二是字符串类型;虽然shell本身是弱类型的,但也可以这么区分。
定义数组:
数组中可以存放多个值。Bash Shell只支持一维数组(不支持多维数组),初始化时不需要定义数组大小(与PHP类似)。
与大部分编程语言类似,数组元素的下标由0开始。
在Shell中,用括号来表示数组,数组元素用“空格”符号分割开。定义数组的一般形式为:
数组名=(值1 值2 ... 值n)
例如:
array_name=(value0 value1 value2 value3) |
或者
array_name=( value0 value1 value2 value3 ) |
还可以单独定义数组的各个分量:
array_name[0]=value0 array_name[1]=value1 array_name[n]=valuen |
使用数组
1.读取数组
读取数组元素值的一般格式是:
${数组名[下标]}
例如:
valuen=${array_name[n]} |
使用@符号可以获取数组中的所有元素,例如:
echo ${array_name[@]} |
读取数组元素值的一般格式是:
${array_name[index]}
# vi cc.sh
#!/bin/bash my_array=(A B "C" D) echo "第一个元素为:${my_array[0]}" echo "第二个元素为:${my_array[1]}" echo "第三个元素为:${my_array[2]}" echo "第四个元素为:${my_array[3]}" ~
# chmod +x cc.sh
# ./cc.sh
获取数组中的所有元素
使用@或*可以获取数组中的所有元素,例如:
#vi aa.sh
#!/bin/bash my_array[0]=A my_array[1]=B my_array[2]=C my_array[3]=D echo "数组的元素为:${my_array[*]}" echo "数组的元素为:${my_array[@]}"
获取数组的长度
获取数组长度的方法与获取字符串长度的方法相同
#vi dd.sh
#!/bin/bash my_array[0]=A my_array[1]=B my_array[2]=C my_array[3]=D echo "数组元素个数为:${#my_array[*]}" echo "数组元素个数为:${#my_array[@]}"
# ./dd.sh