shell数组
shell数组
在编写shell脚本时,有些场景用数组还是比较方便的,下面进行下简单的介绍~
数组定义
数组中可以存放多个值,Shell 只支持一维数组(不支持多维数组),初始化时不需要定义数组大小
与大部分编程语言类似,数组元素的下标由0开始
Shell 数组用括号来表示,元素用”空格”符号分割开,语法格式如下:
1 |
|
shell是弱类型的,并不要求所有数组元素的类型必须相同
1 |
|
shell数组的长度不是固定的,定义之后还可以增加元素。例如,对于上面的Arr数组,它的长度是5,下面的代码会在最后增加一个元素,使其长度扩展到 7:
1 |
|
此外,也无需逐个元素地给数组赋值,下面的就是只给特定元素赋值:
1 |
|
以上就只给第2、9、11个元素赋值,所以数组长度是3
使用自定义分隔符定义数组
1 |
|
获取数组元素
获取数组元素的值,一般使用下面的格式,其中,array_name 是数组名,index 是下标:
${array_name[index]}
1 |
|
获取数组长度
获取数组长度的方法与获取字符串长度的方法相同:
1 |
|
数组遍历
遍历1:标准for循环
1 |
|
遍历2:不带数组下标
1 |
|
遍历3:带数组下标
1 |
|
遍历4:while循环
1 |
|
判断元素是否在数组中
方式1
1 |
|
方式2
语法格式: [[ "${Arr[@]}" =~ "字符串" ]]
1 |
|
[[]]: 双中括号,这个结构是测试,测试[[]]之中的表达式
=~: 这个是正则表达式匹配,可用在[[]]测试中
数组删除操作
清除某个元素:unset Arr[1]
,这里清除下标为1的数组
清空整个数组:unset Arr
分片访问数组
分片访问形式为:${数组名[@或*]:开始下标:元素个数}
分片访问从下标为1开始,元素个数为4:${Arr[@]:1:4}
关联数组
shell支持关联数组,可以使用任意的字符串、或者整数作为下标来访问数组元素。
关联数组使用declare
命令来声明,语法格式如下:
1 |
|
-A
选项就是用于声明一个关联数组关联数组的键是唯一的
1 |
|
也可以先声明一个关联数组,然后再设置键和值:
1 |
|
访问关联数组元素可以使用指定的键,格式如下:
1 |
|
通过键来访问关联数组的元素:
1 |
|
蚂蚁再小也是肉🥩!
“您的支持,我的动力!觉得不错的话,给点打赏吧 ୧(๑•̀⌄•́๑)૭”
微信支付
支付宝支付