5.shell数组

数组

数组定义

##方法一
数组名=(value1 value2 value3 ....)

在这里插入图片描述

##方法二
数组名=([0]=value [1]=value [2]=value)

在这里插入图片描述

##方法三
列表名="value0 value1 value2"
数组名=($列表名)

在这里插入图片描述

##方法四
数组名[0]="value"
数组名[1]="value"
数组名[2]="value"

在这里插入图片描述
数组包括的数据类型

  • 数值类型
  • 字符类型
    在使用字符类型定义时使用 " " 或 ’ ’ 定义

数组元素查看

echo ${array[*]}      ##获取数组所有值
echo ${array[@]}
echo ${array[1]}     ##获取某个下标的值

echo ${#array[@]}    ##统计数组的长度

echo ${!array[@]}    ##获取数组的所有元素下标值

在这里插入图片描述

如何查看数组是否完整

##方法一
echo ${!arry[@]}     ##用查找下标的方法查看

在这里插入图片描述

##方法二
##查看数组是否缺少元素
##查看长度减1的值是否为最后一个值,如果不是,即缺少元素
##判断数组是否缺少元素

#!/bin/bash

array=([0]=10 [1]=20 [4]=30)

length=${#array[@]}         ##获取数组长度
lastnum=$[length - 1]       ##获取数组最后一个元素的下标
lastone=${array[$lastnum]}  ##获取数组最后一个元素的值

a=$(echo ${array[@]} | awk '{print $NF}')
##比较数组的最后一个元素的实际值和理论值

if [ "$lastone" == "$a" ];then
	echo "数组是完整的"
else
	echo "数组不完整"
fi

在这里插入图片描述

数组切片

##数组切片
echo ${i:6:3}     ##字符切片

echo ${array[@]:1:3}  ##数组切片   数组:初始元素下标:获取元素的长度

在这里插入图片描述

数组元素替换

##数组元素替换
echo ${array[a]/33/66}  ##数组替换
##数组/原元素/替换的元素
##会将所有匹配的元素进行替换,这种替换不会改变原参数

array=(${array[@]/10/60})  ##重新赋值改变原元素

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

删除数组或数组元素

##删除数组元素
unset array[5]   
unset array     ##删除数组

在这里插入图片描述

数组追加元素

##方法一
array[5]=6   ##在数组的最后下标+1追加

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

##方法二
array[${#array[@]}]=88   ##利用数组的长度追加
##只适用于元素完整的数组

在这里插入图片描述

##方法三
array=("${array[@]}" "value1" "value2")
##此方法 “ ”  不能省略,否则含有空格的元素会有影响
##不能将  @  换成  * ,  * 在双引号的情况下,* 会将全部元素看作一个整体

在这里插入图片描述

##方法四
array+=("value1" "value2")

在这里插入图片描述

将数组传参数到函数

#!/bin/bash

test() {
	echo $1
	echo $@
	newarr=($@)
	echo ${newarr[@]}   ##将函数外的数组传到函数内,在重新组成一个数组
}
arr=(10 20 30 40)
test ${arr[@]}

在这里插入图片描述

在函数中返回数组

#!/bin/bash

test1() {
	newarr=($@)
	for ((i=0;i<${#newarr[@]};i++))
	do
		newarr[$i]=$[2 * ${newarr[$i]}]
	done
	echo ${newarr[@]}
}

arr=(10 20 30)
echo "函数外的数组元素列表为:" ${arr[@]}

arr1=$(test1 ${arr[@]})
echo "新的数组的值为:" ${arr1[@]}
函数名() {
	##函数内通过 $@ 获取调用函数时后面跟的所有参数,在函数内组成新的数组
	newarr=($@)
	....
	
	##对函数内组成的新数组处理后,按照元素的列表格式输出
	echo ${newarr[@]}
	
}
##调用函数时,后面根的参数为数组的元素列表表达式
调用 函数名 ${arr[@]}

##在函数体外,调用函数的表达式组成新的数组
arr=($(函数名 ${arr[@]}))

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夜海赤竹

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值