shell 里的数组

2021/7/22 7:11:39

本文主要是介绍shell 里的数组,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

数组



一:定义数组



1.1 什么是数组

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

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

eg:

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

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



1.2 定义数组的方法一

数组名=(value0 value1 value2 ......)

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

image-20210721082418367



1.3 定义数组的方法二

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

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

image-20210721083612671



1.4 定义数组的方法三

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

列表名=" value0 value2 value3"

数组名=($列表名)

image-20210721085314450



1.5 定义数组的方法四

通过数组名加下标的方式

数组名[0]="value"

数组名[1]="value"

数组名[2]="value"

image-20210721090028568



二:查看数组



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





这篇关于shell 里的数组的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程