shell脚本学习(十六)——数组

1 数组的定义以及表示方法

(1)shell数组的定义

shell数组:是若干数据的集合,其中的每一份数据都称为元素,shell数组元素的下标也是从0开始计数,
获取数组中的元素要使用下标[ ],下标可以是一个整数,也可以是一个结果为整数的表达式;下标必须大于等于0。

(2)shell数组的表示方法

shell中,用小括号( )来表示数组,数组元素之间用空格来分隔。由此,定义数组的一般形式为:

array_name=(ele1 ele2 ele3 ... elen)

注意:赋值号=两边不能有空格,必须紧挨着数组名和数组元素

用小括号将变量值括起来赋值给数组变量,每个变量值之间要用空格进行分隔

array1=(1 2 3 4 5 6)
echo ${array1[*]}		#输出定义数组的所有元素
echo ${array1[@]}		#输出定义数组的所有元素
echo ${array1[0]}		#输出数组中下标为0的元素
echo ${array1[1]}
echo ${array1[2]}

在这里插入图片描述
1)采用键值对的形式赋值

arry= (n1 n2 n3)
arry=([0]=n1 [1]=n2…)(键值对形式,此时,数组定义可以不从0开始,从指定位置开始。)

array2=([1]=one [2]=two [3]=three)
echo ${array2[@]}
echo ${#array2[@]}	#输出定义数组的个数
echo ${array2[0]}
echo ${array2[1]}	#输出定义数组的第一个数

在这里插入图片描述
2)通过分别定义数组变量的方法来定义

 array3[1]=a
 array3[2]=b
 array3[3]=c
 echo ${array3[@]}
 echo ${array3[1]}
 echo ${array3[2]}

在这里插入图片描述
3)动态地定义数组变量
动态地定义数组变量,并使用命令的输出结果作为数组的内容

mkdir /array/ -p
touch /array/{1..5}.txt
ls /array
array4=($(ls /array))
echo ${array4[@]}
1.txt 2.txt 3.txt 4.txt 5.txt
echo ${#array4[@]}
echo ${#array4[*]}

在这里插入图片描述

2 数组的打印

打印单个数组元素: ${数组名[下标]}   #当未指定数组下标时,下标默认从0开始
打印全部数组内容:${数组名[@]}或${数组名[*]}
打印数组元素的个数:${#数组名[@]}或${#数组名[*]}

3 数组的赋值

如果下标不存在,则自动添加一个新的元素;如果下标存在,则覆盖原来的值。

echo ${array2[@]}
echo ${array2[0]}
array2[0]=haha
echo ${array2[0]}
echo ${array2[@]}
array2[4]=xixi
echo ${array2[@]}
array2[4]=hanhan
echo ${array2[@]}

在这里插入图片描述

4 数组的删除

因为数组本质上还是变量,因此可以通过 unset 数组[下标] 删除相应的数组元素
删除整个数组:unset 数组

echo ${array2[@]}
unset array2[1]
echo ${array2[@]}
unset array2
echo ${array2[@]}

在这里插入图片描述

5 数组内容的截取和替换

(1)截取

echo ${数组名[@]:start:length}	#start代表从第几个下标开始截取,length表示截取的长度
echo ${array1[@]}
echo ${array1[@]:1:4}
echo ${array1[@]:0:2}
array2=($(echo {a..z}))
echo ${array2[@]}
echo ${array2[@]:0:2}	#从下标0开始截取2个
echo ${array2[@]:4:10}	#从下标4开始截取10个

在这里插入图片描述

(2)替换

echo ${数组名[@]/要替换的元素/替换后的元素}
array2=(1 2 3 4 5 6 )
echo ${array2[@]}
echo ${array2[@]/1/A}
echo ${array2[@]/3/C}

在这里插入图片描述

注意:替换完以后,原数组的内容不会改变

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值