目录
绪论:
什么是数组?
由数字组成的组;组中可以是int类型,也可以是string字符类型
数组中的数据类型可以由用户自定义
即可以为相同类型,页、也可以是不同类型的元素的集合
数组的作用?
可以一次性定义多个变量
1、数组
1.1 创建数组的方法
方法1:数组名=(~ ~ ~ ~ ~) 注意:每个元素之间要用空格隔开
eg:ky30=(lt zxy lt1 zxy1 lt2 zxy2 123 456)
解释
ky30:定义数组名
()里面定义数组的元素,多个元素之间空格隔开
echo ${ky30|[*]}打印数组名
方法2:数组名=([0]=1 [1]=2 [2]=3 [3]=4 [4]=5) 注:[ ] 中表示下标位置;数组中,默认下标从0开始
eg:ky30=([0]=1 [1]=2 [2]=3)
echo ${ky30[*]}
上面的[0],[1],[2]表示数组的下表索引,在数组中的位置,默认第一个为0
echo ${ky30 [3]} 表示打印ky30的zxy1
方法3:
数组名[0]=a
数组名[1]=b
数组名[2]=c
1.2 打印数组
echo ${数组名[*]} 或 echo ${数组名[@]}
1.3 查看数组的长度(即查看数组中的元素有几个)
echo ${#数组名[*]}
1.4 获取数组下标对应的元素值
echo ${数组名[下标]}
1.5 数组的遍历
vim shuzu.sh
arr=(1 2 3 4 5)
for i in ${arr[*]}
do
echo $i
done
1.6 数组的切片
索引下标的步长是从当前索引下标的位置包含自己位置往后走几位
lt=(1 2 3 4 5)
echo ${lt[*]}
echo ${lt[*]:0:2}
0表示第一位,2表示从0开始的第一位开始书1,2两个
1.7 数组的替换
替换数组中的元素:
echo ${数组名[*]/old/new} ---- 表示将数组中的元素old 变成new ,注意这种方法是临时改变,只会生效一次
永久替换:
数组名=(${数组名[*]/old/new})
删除数组以及删除数组中的指定元素:
unset 数组名 ------ 删除整个数组
unset 数组名[下标] ------ 通过下标索引位置删除指定元素
追加元素:假设前面有0 1 2 3 4 索引下标了
第一种方式:
数组名[索引下标]=更改后的元素
lt[]5=6
如果lt[0]=6那就把第一个元素给替换了,索引位置为空可以是追加,如果索引有值就是替换
第二种方式:
数组名[${#数组名[*]}]=替换后的元素
lt[${lt[*]}]=9
第三种方法:
数组名+=(元素 元素)
lt +=(8 9)
1.8 数组的应用
数组和函数之间
vim shuzu.sh
ky30() {
abc=($(echo $@))
echo "新数组的值为:${abc[*]}"
}
abc1=(`seq 1 10`)
ky30 ${abc1[*]}
数组作为参数,传参给函数
1.9 冒泡排序
类似于气泡上涌,在数组中从小到大或者从大到小来进行排序,就是把一个大小顺序排序混乱的数组按照从小到大或从大到小进行排序
思路:abc=(20 10 60 40 50 30)两个相邻的数来比,大的往右走,晓得往左走,需要双循环,外循环确认次数,内循环比大小换位置,实现和循环次数的轮次而减少