数组与变量的区别
 变量:存储单个元素的内存空间
 数组:存储多个元素的连续的内存空间,相当于多个变量的集合
 

数组=数组名+索引
 索引:编号从0开始,属于数值索引
 注意:索引可支持使用自定义的格式,而不仅是数值格式,即为关联索引,bash4.0版本之后开始支持
    bash的数组支持稀疏格式(索引不连续)


定义数组
 declare -a ARRAY_NAME:普通数组
 declare -A ARRAY_NAME: 关联数组

 

 数组元素的赋值:
  (1) 一次只赋值一个元素;
   ARRAY_NAME[INDEX]=VALUE
   weekdays[0]="Sunday"
   weekdays[4]="Thursday"
  (2) 一次赋值全部元素:
   ARRAY_NAME=("VAL1" "VAL2" "VAL3" ...)
  (3) 只赋值特定元素:
   ARRAY_NAME=([0]="VAL1" [3]="VAL2" ...)
  (4) 交互式数组赋值(只能用于普通数组)
   read -a ARRAY

 

引用数组
 引用数组元素:${ARRAY_NAME[INDEX]}
 注意:省略[INDEX]表示引用下标为0的元素

 数组的长度(数组中元素的个数):
  ${#ARRAY_NAME[*]}
  ${#ARRAY_NAME[@]}

 

数组数据处理
引用数组中的元素:
 所有元素:${ARRAY[*]},${ARRAY[@]}
 数组切片:${ARRAY[@]:offset:number}
    offset: 要跳过的元素个数
    number: 要取出的元素个数

 取偏移量之后的所有元素:${ARRAY[@]:offset}
 向数组中追加元素:ARRAY[${#ARRAY[*]}]
 删除数组中的某元素,将会形成稀疏格式:unset ARRAY[INDEX]
 
 关联数组:declare -A ARRAY_NAME
     ARRAY_NAME=([idx_name1]='val1' [idx_name2]='val2‘...)

 

应用实例
1,使用数组保存10个随机数,并找出最大什与最小值
示例代码:
[root@centos7 array]# cat arrayrandom.sh
#!/bin/bash

#Author:wangjun
#Contact QQ:183530300
#Version:2.0
#Create time:2016-08-23 10:33:38
#Description:Compares the size of the random number stored in array

declare -a array_random
declare -i maxrandom=0
declare -i minrandom=32767

for I in {0..9};do
  array_random[$I]=$[RANDOM]
  echo ${array_random[$I]}
  if [[ ${array_random[$I]} -gt $maxrandom ]];then
    maxrandom=${array_random[$I]}
  elif [[ ${array_random[$I]} -lt $minrandom ]];then
    minrandom=${array_random[$I]}
  fi
done
echo Maxrandom is : $maxrandom
echo Minrandom is : $minrandom
[root@centos7 array]# arrayrandom.sh
31892
30901
16560
226
7987
2082
5756
23992
28530
21832
Maxrandom is : 31892
Minrandom is : 226