标签:数组与变量的区别 声明数组 引用数组 数组数据处理 数组应用实例
数组与变量的区别
变量:存储单个元素的内存空间
数组:存储多个元素的连续的内存空间,相当于多个变量的集合
数组=数组名+索引
索引:编号从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
本文出自 “爱情防火墙” 博客,请务必保留此出处http://183530300.blog.51cto.com/894387/1841450
标签:数组与变量的区别 声明数组 引用数组 数组数据处理 数组应用实例
原文地址:http://183530300.blog.51cto.com/894387/1841450