2107/9/15 周五
今天我给大家分享一波数组,那么数组是什么呢? 数组是存储多个元素的连续的内存空间,相当于多个变量的集合,数组包括数组名和索引,当我们新建了一个数组之后就可以使用其中的索引来搞一波事情,既然有索引有编号,数组又是连续的,那么无序的数组就叫做稀疏数组,而且我们的索引也可以支持自定义的格式,没有非要数值,123的去排序,但是这个功能只有bash4.0才可以支持,那问题来了,怎么查看我们的bash版本呢?
据我所知,我们的centos6,7都是bash4.0以上的,而centos5则不能支持bash,即为关联索引。
既然我们提到了变量,那我们肯定都知道,使用变量是需要提前定义的,那么我们的数组是怎么定义的呢?
declare -a ARRAY_NAME | 数组 |
declare -A ARRAY_NAME | 关联数组 |
注意:两者不可相互转换,而且当我们删除数组中的某元素--->导致稀疏格式
ARRAY_NAME=([idx_name1]='val1' [idx_name2]='val2‘...)
注意:关联数组必须先声明再调用
定义之后就是我们的数组赋值,赋值的时候分为四种
(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
既然可以赋值,那我们的查询就很easy了,使用declare -a
这些都没有什么好说的,我们就直接进入肉戏,引用数组,如果是我们的引用单个数组的某个元素,我们可以使用${ARRAY_NAME[INDEX]}注意:省略[INDEX]表示引用下标为0的元素
引用数组中的元素:
数组切片: ${ARRAY[@]:offset:number}
offset: 要跳过的元素个数
number: 要取出的元素个数
取偏移量之后的所有元素
${ARRAY[@]:offset}
向数组中追加一些元素:ARRAY[${#ARRAY[*]}]=value
俗话说的好,光说不练假把式,我们在下面有个小题,就当是我们课后的小扩展:
练习:生成10个随机数保存于数组中,并找出其最大值和最小值。
#!/bin/bash
declare -a rand
for ((i=0;i<10;i++));do
rand[$i]=$RANDOM
[ $i -eq 0 ] && max=${rand[$i]} && min=$min && continue
[ ${rand[$i]} -gt $max ] && max=${rand[$i]} && continue
[ ${rand[$i]} -lt $min ] && min=${rand[$i]}
done
echo "All rand are ${rand[@]}"
echo "Max is $max"
echo "Min is $min"
好了,今天的分享就到这,本周刚转战的51CTO,内容和时间都有些仓促,不足之处,请多多指教。