linux 定义空数组长度,shell脚本进阶之数组基础

SHELL脚本--shell数组基础

​ 数组和变量的区别:变量在内存中占用的空间是离散的,数组在内粗中开辟一段连续的大内存空间,随后数组中的每个元素都放入数组内存中。数组元素使用index标识。

​ bash里有两种数组普通数组和关联数组。普通数组只能使用整数类形数值作为数组索引,关联数组可以使用字符串作为索引。关联数组的另外三种称呼:字典(dict),hash结构和映射(map),是一种key和value一一对应的关系。

一、普通数组

1.1定义普通数组

方法一:

[root@linux1 ~]# age=(18 22 36 28)

[root@linux1 ~]# echo ${age[3]}

28

方法二:自定义索引位

[root@linux1 ~]# age[5]=15

[root@linux1 ~]# age[6]=76

1.2打印数组所有值

[root@linux1 ~]# echo ${age[*]}

18 22 36 28 15 76

[root@linux1 ~]# echo ${age[@]}

18 22 36 28 15 76

1.3查看数组索引号

[root@linux1 ~]# echo ${!age[@]}

0 1 2 3 5 6

1.4统计数组中元素的个数(只统计值不为空的元素)

[root@linux1 ~]# echo ${#age[@]}

6

[root@linux1 ~]# echo ${#age[*]}

6

1.5统计数组下标为1的变量的长度

[root@linux1 ~]# echo ${#age[1]}

2

二、关联数组

2.1声明关联数组

[root@linux1 ~]# declare -A array_dep

2.2数组赋值

[root@linux1 ~]# array_dep=([name1]=zhaosi [name2]=zhangsan)

分开赋值

[root@linux1 ~]# array_dep[name3]=wangwu

[root@linux1 ~]# array_dep[name4]=wangba

2.3查看数组所有值

[root@linux1 ~]# echo ${array_dep[*]}

wangwu zhangsan zhaosi wangba

[root@linux1 ~]# echo ${array_dep[@]}

wangwu zhangsan zhaosi wangba

2.3查看数组索引号

[root@linux1 ~]# echo ${!array_dep[@]}

name3 name2 name1 name4

[root@linux1 ~]# echo ${!array_dep[*]}

name3 name2 name1 name4

2.4统计数组长度

[root@linux1 ~]# echo ${#array_dep[*]}

4

[root@linux1 ~]# echo ${#array_dep[@]}

4

三、数组元素截取、替换

和变量的截取和替换是类似的

[root@linux1 ~]# age=(12 15 34 23 56 21)

[root@linux1 ~]# age0=${age[*]:2:2} #从数组全部元素中第2个元素向后截取2个元素出来(即34 23)

[root@linux1 ~]# echo ${age0[*]}

34 23

[root@linux1 ~]# age1=${age[*]/15/51} #将数组中的15替换成51

[root@linux1 ~]# echo ${age1[*]}

12 51 34 23 56 21

从左匹配删除和从又匹配删除

[root@linux1 ~]# array=(one two three foue five)

[root@linux1 ~]# array1=${array[*]#*o} #o前面的都删了,只留o右边(最短匹配)

[root@linux1 ~]# array2=${array[*]##*o} #o前面的都删了,只留o右边(最长匹配)

[root@linux1 ~]# array3=${array[*]%o} #o后面的都删了,只留o前面(最短匹配)

[root@linux1 ~]# array4=${array[*]%o} #o后面的都删了,只留o前面(最长匹配)

[root@linux1 ~]# echo ${array1[*]}

ne three ue five

[root@linux1 ~]# echo ${array2[*]}

ne three ue five

[root@linux1 ~]# echo ${array3[*]}

one tw three foue five

[root@linux1 ~]# echo ${array4[*]}

one tw three foue five

四、for循环遍历数组

第一种写法:

for i in ${array[*]};do

echo $i

done

第二种写法:

for i in ${!array[*]};do

echo ${array[$i]}

done

第三种写法:c语言风格

for ((i=0;i

echo ${array[$i]}

done

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值