一、数组的定义
【数组元素的格式】
ARRAY[index]
index从0开始。
【定义数组】
在Bash中定义数组有两种方法:
(1)直接在定义时为所有的数组元素赋值:
[root@localhost shell]# ARRAY=(1 2 3 4 5)
(2)对数组中每个数组元素进行赋值:
[root@localhost shell]# ARRAY[0]=1; ARRAY[4]=5; ARRAY[3]=4
使用这种方法对数组定义时,可以不按照数组下标的先后顺序进行操作,也不必对数组中的每一个元素赋值。
提示:使用第二种方法时,如果出现了某些数组元素没有赋值的情况,系统将会自动将一个空值赋给这些元素。
(3)如果需要修改数组中某个元素的值,可以使用数组定义中的第二种方法:
[root@localhost shell]# ARRAY[1]=2 [root@localhost shell]# ARRAY[2]=3 ...
二、数组的使用
(1)如果需要引用数组中的某个元素,可以使用数组名加索引的方式:
[root@localhost shell]# echo ${ARRAY[2]} 3
与其他语言中引用数组元素不同,在Bash中需要将数组元素放入大括号“{}”中,其目的是为了避免Bash将数组名误解为一个变量。
(2)如果不指定数组索引,将会显示数组中的第1个元素的值:
[root@localhost shell]# echo $ARRAY 1
(3)有时可能希望看到数组中所有元素的值,这样做的目的可能是为了检查其值是否有错误:
[root@localhost shell]# echo ${ARRAY[*]} 1 2 3 4 5
上面示例中,“*”表示所有下标,也可以使用“@”。
(4)当数组中的元素非常多时,可能查看起来非常不方便,这是可以指定查看的元素范围,例如:
#查看数组中下标大于等于2的所有元素的值 [root@localhost shell]# echo ${ARRAY[@]:2} 3 4 5
(5)有时需要获得数组的长度,即数组中一共有多少个元素。这是可以使用以下形式:
[root@localhost shell]# echo ${#ARRAY[@]} 5
(5)示例脚本,按数组元素的值从小到大排序:
[root@localhost shell]# cat example3.sh #!/bin/bash #This is a example script. #2013/12/16 ARRAY=(123 457 99 379 622 895 111 45 1000) LENTH=${#ARRAY[@]} I=0 while [ "$I" -lt "$LENTH" ] do J=`expr $I + 1` while [ "$J" -lt "$LENTH" ] do if [ "${ARRAY[J]}" -lt "${ARRAY[I]}" ] then TEMP=${ARRAY[J]} ARRAY[J]=${ARRAY[I]} ARRAY[I]=$TEMP fi J=`expr $J + 1` done I=`expr $I + 1` done echo ${ARRAY[@]} unset ARRAY I J TEMP LENTH
[root@localhost shell]# ./example3.sh 45 99 111 123 379 457 622 895 1000
三、清除数组
不再使用数组时,应该清楚数组,以回收这些数组占用的系统资源。与变量相同,清除数组也使用unset命令。
(1)清除数组ARRAY的第1个元素:
[root@localhost shell]# unset ARRAY[0]
(2)清除整个数组:
[root@localhost shell]# unset ARRAY
[root@localhost shell]# echo ${ARRAY[@]}