摘要
数组的特性就是一组数据类型相同的集合,虽然shell是弱类型,但是我们也可以将其数组分为
数据类型的数组
和字符串类型的数组
两类
shell的数组元素之间用空格
分隔开
数组操作
假设有以下两个数组
array1=(1 2 3 4 5 6) array2=("James" "Colin" "Harry")
数据变量名默认输出
默认直接输出变量的话,其输出值默认为第一个元素的值,下标从0
开始
root@pts/1 $ echo $array11root@pts/1 $ echo $array2 James
获取数组元素
格式:${数组名[下标]}
,下标从0开始,下标为*
或@
代表整个数组内容
root@pts/1 $ echo ${array1[2]} 3root@pts/1 $ echo ${array2[1]}Colin## 获取全部元素root@pts/1 $ echo ${array2[*]}James Colin Harryroot@pts/1 $ echo ${array2[@]}James Colin Harry
获取数组长度
格式:${#数组名[*或@]}
root@pts/1 $ echo ${#array1[@]} 6root@pts/1 $ echo ${#array2[*]} 3
数组遍历
root@pts/1 $ for item in ${array2[@]}> do> echo "The name is ${item}"> doneThe name is James The name is Colin The name is Harry
数组元素赋值
格式:数组名[下标]=值
,如果下标不存在,则新增数组元素
; 下标已有,则覆盖数组元素值
root@pts/1 $ array1[2]=18root@pts/1 $ echo ${array1[*]}1 2 18 4 5 6root@pts/1 $ array2[4]="Betty"root@pts/1 $ echo ${array2[*]} James Colin Harry Betty
数组切片
格式:${数组名[*或@]:起始位:长度}
,截取部分数组,返回字符串,中间用空格分隔;将结果使用()
,则得到新的切片数组
root@pts/1 $ echo ${array2[*]}James Colin Harry Bettyroot@pts/1 $ echo ${array2[*]:1:3}Colin Harry Bettyroot@pts/1 $ array3=(${array2[*]:1:2})ks-devops [~] 2018-01-25 20:30:16root@pts/1 $ echo ${array3[@]}Colin Harry
数组元素替换
格式:${数组名[*或@]/查找字符/替换字符}
, 不会修改原数组;如需修改的数组,将结果使用“()”赋给新数组
root@pts/1 $ echo ${array2[*]} James Colin Harry Betty root@pts/1 $ echo ${array2[*]/Colin/Colin.Liu} James Colin.Liu Harry Betty root@pts/1 $ array4=(${array2[*]/Colin/Colin.liu}) root@pts/1 $ echo ${array4[*]} James Colin.liu Harry Betty
删除元素
格式:unset 数组
,清除整个数组;unset 数组[下标]
,清除单个元素
root@pts/1 $ echo ${array2[*]}James Colin Harry Bettyroot@pts/1 $ echo ${array4[*]}James Colin.liu Harry Bettyroot@pts/1 $ unset array4 root@pts/1 $ unset ${array2[3]}root@pts/1 $ echo ${array2[*]}James Colin Harry Bettyroot@pts/1 $ echo ${array4[*]}root@pts/1 $
作者:全栈运维
链接:https://www.jianshu.com/p/ef34af972a92
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦