shell里的数组

一:定义数组

1.1 什么是数组

以括号"()"括起来,中间以空格相间隔

数组里,里面的值称为元素,元素的下标(索引)是从零开始

eg:

数值类型: num=(10 20 30 40)

字符类型:name=( “zhang san” “li si” “wang wu”)

1.2 定义数组的方法一

数组名=(value0 value1 value2 …)

注意,如果数组中的元素本省含有空格,需要使用引号括起来

在这里插入图片描述

1.3 定义数组的方法二

数组名=( [0]=value [1]=value [2]=value …)

注意:此种定义方法,定义时可以不按照顺序定义,但是,如果没有定义中间某个下标的值,会使得该下标的值为空

在这里插入图片描述

1.4 定义数组的方法三

先定义成列表,再将字符串定义成数组

列表名=" value0 value2 value3"

数组名=($列表名)

在这里插入图片描述

1.5 定义数组的方法四

通过数组名加下标的方式

数组名[0]=“value”

数组名[1]=“value”

数组名[2]=“value”

在这里插入图片描述

二:查看数组

2.1 查看数组的值

2.1.1获取数组所有元素的值:

echo ${数组名[@]}

echo ${数组名[*]}

@与* 的区别

在不加引号时,两者没有区别。但是如果加了引号,“@”会依旧会将数组里每个值都看车独立的。而“*”会将数组里所有的值看成一个整体

image-20210721091700760

2.1.2获取数组指定元素的值

echo ${数组名[下标]}

image-20210721091850558

2.2 查看数组的长度

echo ${#数组名[@]}

或者

echo ${#数组名[*]}

image-20210721092052025

2.3 遍历数组

2.3.1 for 循环遍历数组

image-20210721111218030

image-20210721093522108

2.3.2 while 循环遍历数组

image-20210721094126545

image-20210721094152173

2.4 数组的切片

数组切片和字符串切片类似

echo ${数组名[@] : 起始位置 : 步长}

注:数组切片,其步长是元素

image-20210721095342279

三 ,数组替换与追加元素

3.1.整体替换数组

${数组名[@或者*]/ 查找字符/替换字符}

##注:此种并不会替换原有内容,只是将这么做的结果显示出来,数组内容并没有该表

数组名2=(${数组名1[@或者*]/ 查找字符/替换字符})

##注:如过数组名2 和 数组名 1 一样, 则源数组 数组1 会被改变。如果不同,则会生成一个新的数组

以上的数组替换,如果 查找的字符 在数组里有重复的多个,会将所有的一起替换

image-20210721101415170

3.2 替换数组里某个元素的值

数组名[下标]=“value”

image-20210721101822220

3.3 数组的追加元素

3.3.1 方法一

数组名[下标]=“value”

下标,可以自己指定,也可以先获取数组长度,在将长度数字作为数组的下标

##注正常来说,数组的最后一个元素的下标是数组的长度减一,所有,将数组的长度作为下标,可以实现紧接着最后一个元素进行追加。 但是,如果数组中含有元素值为空的元素,就会出现替换而不是追加

image-20210721103754001

image-20210721104833333

3.3.2 方法二

数组名=("${数组名[@]}" valaue1 value2 … )

##注:

此种方法, “${数组名[@]}” ,必须使用使用双引号,不能省略,也不能使用单引号。 使用双引号,是为了防止原数组的元素因为含有空格而被拆分。 同时,双引号可以不取消特殊字符的含义

同时,也必须使用 @ 符号, 不能 替换为 * 符号 。如果替换成 符号* ,因为外面加了双引号,所以会将所有的元素看成一个整体

image-20210721111418813

3.3.3 方法三

数组名+=(value1 value2)

image-20210721112033305

四 数组的删除

4.1 删除整个数组

unset 数组名

image-20210721102129860

4.2 删除数组里的指定元素

unset 数组名[下标]

##注意:删除数组里元素,只是删除该值,该下标的元素将变为空,后面的元素并不会向前进一

image-20210721102635277

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值