当前位置:网站首页>Shell:数组
Shell:数组
2022-08-10 12:12:00 【人间若有一两风】
目录
变量:存储单个元素的内存空间
数组:存储多个元素的连续的内存空间,相当于多个变量的集合
一、数组的概念
数组是存放相同类型数据的集合,在内存中开辟了连续的空间,通常配合循环使用
二、数组的分类
普通数组:不需要声明直接定义,下标索引只能是整数
关联数组:需要用declare -A声明否则系统不识别,索引可以是字符串
三、数组名和索引
索引的编号(下标)从0开始,属于数值索引
索引可支持使用自定义的格式,而不仅是数值格式,即为关联索引,bash 4.0版本之后开始支持bash的数组支持稀疏格式(索引不连续)
四、数组的格式
1、数组的定义
①直接把要加入数组的元素用小括号括起来,中间用空格分开
第一种
格式: 数组名=(value0 value1 value2)
例如:num=(10 20 30 40)

②精确的给每一个下表索引定义一个值加入数组,索引数字可以不连续
第二种
格式: 数组名=([0]=value [1]=value [2]=value...)
例如: num=([0]=10 [1]=20 [2]=30 [3]=40)

③先把要加入数组的元素全部先赋值给一个变量,然后引用这个变量加入到数组
第三种
格式: 变量= "value0 value1 value2 value3"
数组=($列表名)
例如:
list= "10 20 30 40"
num=($list)

④直接定义数组索引对应的的元素
格式: 数组名[0]="value"
数组名[1]="value"
数组名[2]="value"
例如: num[0]="10" num[1]="20" num[2]="30"

定义数组最简单的办法就是:a=(10 20 30 40)
读取数组中的全部长度使用:echo ${#a[*/@]}
读取数组中的下标对应的元素长度: echo ${#a[下标]}
读取数组中的全部内容使用:echo ${a[*/@]}
读取数组中的下标对应的元素内容: echo ${a[下标]}
2、获取数组列表

3、获取数组长度
4、读取某下标赋值

5、数组遍历
使用for循环。遍历输出数组中的每一个元素

6、数组元素的切片
${a[*]:n:m} 提取从索引下标n开始的m个元素
${a[*]:n} 提取从索引下标n开始的所有元素
${ !a[*]} 查看数组有哪些下标

7、数组元素的临时替换
${a[*]/n/m} 将a数组中的元素中有n字符串的替换为m字符串,如果一个元素有多个n字符串只替换一次

8、数组的删除 unset
a=(45 10 100 1000 20 30)
unset a //删除数组
a=(45 10 100 1000 20 30)
unset a[3] //删除数组第3个元素

五、冒泡数组
数组排序算法:冒泡排序
类似气泡上涌的动作,会将数据在数组中从小到大或者从大到小不断的向前移动。
基本思想:
冒泡排序的基本思想是对比相邻的两个元素值,如果满足条件就交换元素值,把较小的元素移动到数组前面,把大的元素移动到数组后面(也就是交换两个元素的位置),这样较小的元素就像气泡一样从底部上升到顶部。
算法思路:
冒泡算法由双层循环实现,其中外部循环用于控制排序轮数,一般为要排序的数组长度减1次,因为最后一次循环只剩下一个数组元素,不需要对比,同时数组已经完成排序了。而内部循环主要用于对比数组中每个相邻元素的大小,以确定是否交换位置,对比和交换次数随排序轮数而减少。

边栏推荐
- MYSQL误删数据恢复
- The god-level Alibaba "high concurrency" tutorial - basic + actual combat + source code + interview + architecture is all-inclusive
- Behind IDC's No. 1 position, what kind of "video cloud" is Alibaba Cloud building?
- 你是怎么知道数据库 Htap 能力强弱的?怎么能看出来
- Chapter9 : De Novo Molecular Design with Chemical Language Models
- es6-promise对象详解
- 太香了!自从用了这款接口神器,我的团队效率提升了 60%!
- 【list合并】多个list合并为一个list
- What are the five common data types of Redis?What is the corresponding data storage space?Take you to learn from scratch
- 金山云要飘到哪里?
猜你喜欢

培训机构学习费用是多少呢?

蚂蚁金服+拼多多+抖音+天猫(技术三面)面经合集助你拿大厂offer

How to cultivate the design thinking of ui designers?

11 + chrome advanced debugging skills, learn to direct efficiency increases by 666%

表中存在多个索引问题? - 聚集索引,回表,覆盖索引

百度用户产品流批一体的实时数仓实践

浙大、阿里提出DictBERT,字典描述知识增强的预训练语言模型

阿里云贾朝辉:云XR平台支持彼真科技呈现国风科幻虚拟演唱会

国外媒体宣发怎样做才可以把握重点

爱可可AI前沿推介(8.10)
随机推荐
Merge similar items in LeetCode simple questions
基础 | batchnorm原理及代码详解
What are the five common data types of Redis?What is the corresponding data storage space?Take you to learn from scratch
Dining (web stream)
自定义过滤器和拦截器实现ThreadLocal线程封闭
人脸考勤是选择人脸比对1:1还是人脸搜索1:N?
Overview of Loudi Petrochemical Experiment Design and Construction Planning
camshift实现目标跟踪
[Collection] HashSet and ArrayList lookup Contains() time complexity
可视化服务编排在金融APP中的实践
没有接班人,格力只剩“明珠精选”
基于PLECS的离网(孤岛)并联逆变器的Droop Control下垂控制仿真
虚拟机桥接模式不能上网
bat脚本——提取多个文件夹到指定路径
Solve the idea that unit tests cannot use Scanner
Blast!ByteDance successfully landed, only because the interview questions of LeetCode algorithm were exhausted
jenkins数据迁移和备份
iTextSharp操作PDF
一文详解 implementation api embed
数字藏品,“赌”字当头