Shell数组及其相关操作
2019-05-30 16:27
330 查看
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_28591897/article/details/90699793
Shell数组及其相关操作
Shell 数组(Array)是若干数据的集合,其中的每一份数据都称为元素(Element)。下标从 0 开始计数。
没有限制数组的大小,理论上可以存放无限量的数据,且不限制数据类型。
最常用的 Bash Shell 只支持一维数组,不支持多维数组。
数组初识
定义
Shell 中,用括号
( )来表示数组,数组元素之间用空格来分隔。
格式
array=(elem1,elem2···elemN) # 注意:赋值号=两边不能有空格,必须紧挨着数组名和数组元素。
数组实例
#!/bin/bash # 一般格式 arrs=(1 2 3 4 5) echo ${arrs[*]} #弱类型,不限制元素类型 arrs=(1 2 name pass) echo ${arrs[*]} #长度不固定,可以随意增加 arrs[4]=25 echo ${arrs[*]} #索引不一定是连续的数字,无需逐个赋值 arrs=([2]=5 [3]=2 [5]=0) echo ${arrs[@]}
返回结果
1 2 3 4 5 1 2 name pass 1 2 name pass 25 5 2 0
读取数组
对比
单个元素读取 | 遍历全部元素 | |
---|---|---|
格式 | ${array_name[index]} | nums[∗]<br/>{nums[*]}<br/>nums[∗]<br/>{nums[@]} |
描述 | array_name是数组名,index是下标 | 使用@或 *可以获取数组中的所有元素 |
示例 | ${arrs[1]} | ${arrs[*]} |
获取长度
对比
获取字符串元素长度 | 获取数组长度 | |
---|---|---|
描述 | 如果某个元素是字符串,还可以通过 指定下标的方式获得该元素的长度 |
利用@或 *,可以将数组扩展成列表, 然后使用 #来获取数组元素的个数 |
格式 | ${#array_name[index]} | ${#array_name[@]} |
示例 | ${#arrs[@]} | ${#arrs[2]} |
长度示例
#!/bin/bash arr=(1 2 3 4 5 beijing) echo ${#arr[@]} echo ${#arr[5]}
返回结果
6 #数组长度 7 #beijing长度
数组拼接
拼接数组的思路是:先利用
@或
*,将数组扩展成列表,然后再合并到一起。
格式
array_new=(${array1[@]} ${array2[@]}) array_new=(${array1[*]} ${array2[*]})
拼接示例
#!/bin/bash arr1=(1 2 3) arr2=(中国 美国 英国 西班牙 4) arr=(${arr1[@]} ${arr2[*]}) echo ${arr[@]}
返回结果
1 2 3 中国 美国 英国 西班牙 4
删除操作
Shell中使用 unset 关键字来删除数组元素
对比
删除单个元素 | 删除整个数组 | |
---|---|---|
格式 | unset array_name[index] | unset array_name |
描述 | array_name 表示数组名,index 表示数组下标 | array_name 表示数组名 |
删除示例
#!/bin/bash arr=(1 2 3 4 china) unset arr[1] echo ${arr[@]} unset arr echo ${arr[*]}
返回结果
1 3 4 china #改行返回为空
在使用unset 进行删除操作时,若某个删除某个下标值后,该字段设置为空,后边的不会顶上来,通过原先的下标仍可以访问。
array[0] 其实删除的只是对应的值,但是array[0]这个位置仍然在,原来的array[1]现在仍是array[1],而不会变为array[0]
关联数组
Bash支持关联数组,它可以使用字符串作为数组索引,有时候采用字符串索引更容易理解
类似于java中的key-value类型,其中,key为下标,value为对应的元素的值,key唯一,value可以不唯一。
格式
# 声明 declare -A array_name # 赋值 array[string]=value #string为数组索引,可以为字符串、数字 value为该索引的值
关联示例
#!/bin/bash #声明在初始化 declare -A arr arr["name"]="weilong" arr["age"]=24 arr["email"]="weilong@qq.com" arr["breaf"]="一条单身IT狗" arr["location"]="成都" #或者是直接初始化赋值 worker(["name"="libai" ["age"]="29"] ["sex"]="男") #遍历数组 for i in ${!arr[*]} do echo "$i => ${arr[$i]}" done #输出所有键 echo ${!arr[*]} #输出所有值 echo ${arr[*]} #输出数组长度 echo ${#arr[*]}
返回结果
breaf => 一条单身IT狗 name => weilong email => weilong@qq.com age => 24 location => 成都 breaf name email age location 一条单身IT狗 weilong weilong@qq.com 24 成都 5
相关文章推荐
- Shell中的数组及其相关操作
- Shell中的数组及其相关操作
- Shell中的数组及其相关操作
- 学习Opencv,图像和大数组类型,Mat类及其相关操作,opencv的入门基础
- Shell数组相关操作
- 数组的初始化及其相关操作
- 小苏的Shell编程笔记之二--Shell变量及其相关操作
- Shell脚本数组操作小结
- Scala坑三(数组相关操作)
- pyhton中数组、列表和字典的相关操作
- 快学Scala习题解答—第三章 数组相关操作
- Flask-SQLAlchemy配置MySQL及其相关操作
- Python每日一记28>>>字符串及其相关操作
- Shell中数组相关问题
- 数组结合循环处理重复性操作的shell实例
- C#中ArrayList数组的相关操作
- 数组的一些相关操作
- shell中数组的操作
- 网络驱动移植之sk_buff结构体及其相关操作函数(上)
- iOS byte byte数组的相关操作