当前位置:网站首页>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次,因为最后一次循环只剩下一个数组元素,不需要对比,同时数组已经完成排序了。而内部循环主要用于对比数组中每个相邻元素的大小,以确定是否交换位置,对比和交换次数随排序轮数而减少。
边栏推荐
- LeetCode medium topic search of two-dimensional matrix
- ArcMAP出现-15的问题无法访问[Provide your license server administrator with the following information:Err-15]
- LT8911EXB MIPI CSI/DSI to EDP signal conversion
- 海外媒体宣发.国内媒体发稿要注意哪些问题?
- 【list合并】多个list合并为一个list
- AICOCO AI Frontier Promotion (8.10)
- LeetCode中等题之搜索二维矩阵
- 把相亲角搬到海外,不愧是咱爸妈
- leetcode/两个链表的第一个重合节点
- AtCoder初学者比赛077 D -小多
猜你喜欢
Does face attendance choose face comparison 1:1 or face search 1:N?
Jenkins修改端口号, jenkins容器修改默认端口号
22年BATJ大厂必问面试题(复盘):JVM+微服务+多线程+锁+高并发
加密游戏:游戏的未来
Solution for "Certificate not valid for requested usage" after Digicert EV certificate signing
面试美团被问到了Redis,搞懂这几个问题,让你轻松吊打面试官
Keithley DMM7510精准测量超低功耗设备各种运作模式功耗
MYSQL误删数据恢复
mSystems | 中农汪杰组揭示影响土壤“塑料际”微生物群落的机制
浙大、阿里提出DictBERT,字典描述知识增强的预训练语言模型
随机推荐
Codeforces Round #276 (Div. 1) B. Maximum Value
培训机构学习费用是多少呢?
「企业架构」应用架构概述
Highways「建议收藏」
Blast!ByteDance successfully landed, only because the interview questions of LeetCode algorithm were exhausted
2022年8月中国数据库排行榜:openGauss重夺榜眼,PolarDB反超人大金仓
22年BATJ大厂必问面试题(复盘):JVM+微服务+多线程+锁+高并发
线代 | 秒杀方法与技巧
基于PLECS的离网(孤岛)并联逆变器的Droop Control下垂控制仿真
Guidelines for Sending Overseas Mail (2)
Detailed explanation of es6-promise object
AICOCO AI Frontier Promotion (8.10)
【jstack、jps命令使用】排查死锁
Codeforces Round #276 (Div. 1) D. Kindergarten
【百度统计】用户行为分析
阿里架构师整理一份企业级SSM架构实战文档,让你熟悉底层原理
实践为主,理论为辅!腾讯大佬MySQL高阶宝典震撼来袭!
Behind IDC's No. 1 position, what kind of "video cloud" is Alibaba Cloud building?
Codeforces Round #276 (Div. 1) D. Kindergarten
你是怎么知道数据库 Htap 能力强弱的?怎么能看出来