shell脚本之数组

1.数组的基本概念和相关知识 

数组(Array)是有序的元素序列。 若将有限个类型相同的变量的集合命名,那么这个名称为数组名。组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。用于区分数组的各个元素的数字编号称为下标。数组是在编程中,为了处理方便, 把具有相同类型的若干元素按有序的形式组织起来的一种形式。 这些有序排列的同类数据元素的集合称为数组。

2. Linux中数组的构造 

2.1 数组默认规则 

数组中的每个元素分分隔符一定为空格隔开
每个元素都拥有与其对应的下标,第一个对应的下标值为0

2.2 字符串和字符列表的定义 

在数组之前我们定义一串字符的变量,用到的是字符串和字符串列表
字符串的定义格式: 变量名= 字符数据

字符串列表的定义格式: 变量名="字符 分隔符 字符............."

2.3数组定义构造的方法
常用的数组定义方法一共拥有4种,各有不同的特点与运用场景

2.3.1 定义方式1
数组名=(value0 value1 value2 ..........valuen)

2.3.2 定义方式2
数组名=( [0]=value1 [1]=value2 [2]=value3.........[N-1]=valueN )

 2.3.3 定义方式3
1.定义一个字符串列表 :列表名="value1 value2 value3...........valueN"

2.用数组获取字符串列表中的内容: 数组名=($列表名)

2.3.4 定义方式4(该方法还可以用于单个元素的修改) 
数组名[0]=value1
数组名[1]=value2
数组名[2]=value3
数组名[3]=value4
 ............................
数组名[N-1]=valueN

3. 数组的输出,删除和长度统计

3.1 数组元素的输出 

3.1.1 单元素的输出 

格式:echo ${数组名[下标]}


3.1.2 数组全部元素输出 
方式一:echo ${数组名[*]}
方式二:echo ${数组名[@]}

3.1.3 任意字符起输出任意个数数组元素 (数组切片) 
方式一:echo ${数组名[*]:下标:个数}
方式一:echo ${数组名[@]:下标:个数}


3.1.4 条件判断输出方式 
该输出方式,当数组存在元素,则输出数组的,如果不存在,则输出我们指定的内容
格式:echo ${数组名:-'选择输出的内容'}

3.2 数组的删除 (Linux命令环境中) 

3.2.1 删除单个数组元素 

格式: unset 数组名[N]  其中N为存在元素的数组下标(不存在也能操作,但是没有意义)

3.2.2 删除整个数组 

格式: unset 数组名[*] 或则 unset 数组名[@]

3.3 数组长度统计及其其他作用 
3.3.1 统计数组长度的方法 
格式:echo ${#数组名[*]}或者 echo ${#数组名[@]}

3.3.2 用元素个数的方法来检测数组中是否存在空值 
数组空值产生的原因:
我们用方法四定义数组元素值时,可以随意指定下标位置,但与此同时中间的有些数组下标中的元素就成了空值 。

操作过程:
1.定义一个变量获取数组的长度:新变量= ${#数组名[*]}
2.输出依据数组长度的最后一个元素:echo ${数组名[lenth-1]]
3.与数据列表最后一个值进行比较

4.数组的遍历和替换 

4.1 数组的遍历 

我们可以用数组存储多个元素作为循环条件来使用,当数组配上循环,就可以形成一个指定范围和数据的遍历

数组遍历演示:

4.2 数组中元素的替换 

4.2.1 数组的临时替换 

格式: echo ${数组名[*]/被替换的字符或字段/新的字符或字段}

4.2.2 永久替换数组内容 

原理描述: 用一个新的数组去接收临时替换的数组的元素(达到永久替换的效果)
运用演示:

5.数组追加元素 

5.1 方式一:指定位置添加 

与定义数组方法4一样,直接赋予新值覆盖原来的元素
数组名[N]=新value

格式: 数组名[${#数组名[*]}] =新元素 或 数组名[${#数组名[@]}] =新元素


5.3 方式三:进行末尾多元素追加 

格式:数组名=("${数组名[@]}" value1 value2 ......valueN) 
运用演示:

方法四:直接末尾追加多元素且格式最为简单 

格式: 数组名+=(value1 value2 ........valueN)

6.数组在函数的传参 

需求:定义一个遍历数组的函数,并且让数组里的元素翻倍输出

结果测试 :

总结 
1.数组的构造方法(我们可以看作是一个集合变量,包含许多独立的元素)
2.学会数组替换,并且用新数组接收,就可以形成永久替换的效果
3.追加数组的第三种方法要注意" "还有表示数组全部用@不用*
 4.函数获取数组,函数的位置变量使用$@或则@*才可获取完整的数组参数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值