数组基本操作

数组

一、数组定义方法

(10 20 40 60 90 )		#元素
  0  1  2  3  4			#对应的索引/下标11

数组下标最大长度:n-1

方法一:

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

在这里插入图片描述
方法二:

数组名=([0]=11 [1]=22 [2]=33 [3]=44 ...)

在这里插入图片描述
方法三:

列表名="value0 value1 value2 ..."
数组名=($列表名)

在这里插入图片描述
方法四:

数组名[0]="value"
数组名[1]="value"
数组名[2]="value"
数组名[3]="value"

在这里插入图片描述

二、数组包括的数据类型

  • 数值类型
  • 字符类型
    • 使用" "或’ '定义,防止元素当中有空格,元素按空格分隔

2.1、获取数组长度

array=(1 2 3 4 5)			#定义数组
array=${#arrayr[*]}	#获取数组长度
		   ${#array[@]}	#获取数组长度
echo $array

在这里插入图片描述

2.2、获取数据列表

echo ${array[*] }
echo ${array[@] } .

在这里插入图片描述

2.3、读取某下标赋值

lcl=${array[2]}
echo $lcl

在这里插入图片描述

2.4、数组遍历

#!/bin/bash
array=(1 2 3 4 5)
for i in ${array[@]}
do
echo $i 
done

在这里插入图片描述
在这里插入图片描述

2.5、数组的切片(分割)

lcl=(1 2 3 4 5 6)	  #定义数组
echo ${array[@]}       #输出整个数组
echo ${array[@]:0:2}   #获取 ${数组名[@ 或 *]:起始位置:长度} 的值
echo ${array[@]:2:2}
echo ${array[@]:3:4}

在这里插入图片描述

2.6、数组替换

单个替换
在这里插入图片描述
多个替换

array=(1 2 3 4 5)

echo ${array[@]/4/bb}		#${数组名[@或*]/查找字符/替换字符}
echo ${array[@]}			#并不会替换数组原有内容

array=(${array[@]/4/bb})	#要实现改变原有数组,可通过重新赋值实现
echo ${array[@]}	

在这里插入图片描述

2.7、删除数组

array=(1 2 3 4 5)
unset array			#删除数组
echo ${array[*]}

array=(1 2 3 4 5)
unset array[2]		#删除第三个元素
echo ${array[*]}

在这里插入图片描述

三、数组追加元素

方法一:

array[index]=value

在这里插入图片描述
方法二:
在数组未进行删减时,可以使用此方法

array[${#arry[@]}]=value	#数组名[数组长度]=数值

在这里插入图片描述

方法三:

array=("${array[@]}"value1 ... valueN)

双引号不能省略,否则,当数组array中存在包含空格的元素时会按空格将元素拆分成多个
不能将“@”替换为“*”,如果替换为“*”,不加双引号时与“@”的表现一致, 加双引号时,会将数组array中的所有元素作为一个元素添加到数组中

在这里插入图片描述
方法四

array+=(valuel ... valueN)
待添加元素必须用"()"包括起来,并且多个元素用空格分隔

在这里插入图片描述

四、向函数传数组参数

如果将数组变量作为函数参数,函数只会取数组变量的第一个值

test1 () {
echo "函数中接收到的参数列表: $@"
newarrary=($@) 
echo "函数中新数组newarr的值为: ${newarrary[@]}"
}

array=(10 20 30 40 50)
echo "原始数组的值为: ${array[@]}"
test1 $array

在这里插入图片描述
在这里插入图片描述
解决这个问题则需要将数组变量的值分解成单个的值,然后将这些值作为函数参数使用。在函数内部,再将所有的参数重新组合成一个新的数组变量。

在这里插入图片描述

在这里插入图片描述
总结

列表
"10 20 30 40 50 60"
在函数外把数组传递到函数内

函数外
函数名${数组名[@]}

使用${数组名[@]}获取数组的列表,再用这个列表作为参数给函数传递

函数内
使用$@接收参数列表,再用数组名=($@)在函数内生成--个的数组

五、从函数返回数组

在这里插入图片描述
在这里插入图片描述

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值