Shell数组:Shell数组定义以及获取数组元素

【Shell 脚本综合】通过一个脚本学习如何生成序列、截取字符串、判断数组元素包含和定义函数及传参 阅读详情

1、和其他编程语言一样,Shell 也支持数组。数组(Array)是若干数据的集合,其中的每一份数据都称为元素(Element)。
2、Shell 并且没有限制数组的大小,理论上可以存放无限量的数据。和 C++、Java、C# 等类似,Shell 数组元素的下标也是从 0 开始计数。
3、获取数组中的元素要使用下标[ ],下标可以是一个整数,也可以是一个结果为整数的表达式;当然,下标必须大于等于 0。
4、遗憾的是,常用的 Bash Shell 只支持一维数组,不支持多维数组。

Shell 数组的定义

在 Shell 中,用括号( )来表示数组,数组元素之间用空格来分隔。由此,定义数组的一般形式为:   (注意,赋值号 = 两边不能有空格,必须紧挨着数组名和数组元素。)

array_name=(ele1  ele2  ele3 ... elen)

下面是一个定义数组的实例:

nums=(29 100 13 8 91 44)

Shell 是弱类型的,它并不要求所有数组元素的类型必须相同,例如:

arr=(20 56 "http://c.biancheng.net/shell/")

第三个元素就是一个“异类”,前面两个元素都是整数,而第三个元素是字符串。

Shell 数组的长度不是固定的,定义之后还可以增加元素。例如,对于上面的 nums 数组,它的长度是 6,使用下面的代码会在最后增加一个元素,使其长度扩展到 7:

nums[6]=88

此外,你也无需逐个元素地给数组赋值,下面的代码就是只给特定元素赋值:

ages=([3]=24 [5]=19 [10]=12)

以上代码就只给第 3、5、10 个元素赋值,所以数组长度是 3。

获取数组元素

获取数组元素的值,一般使用下面的格式:

${array_name[index]}

其中,array_name 是数组名,index 是下标。例如:

n=${nums[2]}

表示获取 nums 数组的第二个元素,然后赋值给变量 n。再如:

echo ${nums[3]}

表示输出 nums 数组的第 3 个元素。

使用@或*可以获取数组中的所有元素,例如:

${nums[*]}
${nums[@]}

两者都可以得到 nums 数组的所有元素。

完整的演示:

#!/bin/bash

nums=(29 100 13 8 91 44)
echo ${nums[@]}  #输出所有数组元素
nums[10]=66  #给第10个元素赋值(此时会增加数组长度)
echo ${nums[*]}  #输出所有数组元素
echo ${nums[4]}  #输出第4个元素

运行结果:
29 100 13 8 91 44
29 100 13 8 91 44 66
91

【天气雷达】双偏振产品-差分传播相移KDP详解 双偏振产品-差分传播相移KDP详解。 阅读详情

相关推荐

LabVIEW+数据库应用系列保姆级教程,第一篇数据库连接

目录LabVIEW连接数据库的方法连接MySQL连接Oracle,SQL Server,Access等 LabVIEW连接数据库的方法 1、创建udl(Universal Data Link)是通用数据连接文件。界面操作,简单快捷。 2、编写连接字符串。需要熟悉连接字符串的结构,容易出错。 3、其他… 本教程教你使用第1种方法,也是最简单、最常用的方法。 连接MySQL 1、在MySQL Installer内安装MySQL Connector/ODBC,建议安装32位(X86),如下图: 2、创建ODBC

wwplh5520370的博客 1万+

set --- Leedcode 448 找到所有数组中消失的数字

题目 给定一个范围在 1 ≤ a[i] ≤ n ( n = 数组大小 ) 的 整型数组,数组中的元素一些出现了两次,另一些只出现一次。 找到所有在 [1, n] 范围之间没有出现在数组中的数字。 示例: 输入: [4,3,2,7,8,2,3,1] 输出: [5,6] 解析 使用 set 剔除重复元素,再进行遍历。 var findDisappearedNumbers = function(nums) { const n = nums.length; const res = []; co

小柒的前端之旅 538

告别串口升级!手把手教你为STM32H750的W25Q32制作MDK下载算法(QSPI篇)

本文详细介绍了为STM32H750的W25Q32制作MDK下载算法(QSPI篇)的完整流程,帮助开发者告别低效的串口烧录方式。通过定制下载算法,可实现20倍以上的烧录速度提升,支持完整的调试功能,显著提高开发效率。文章涵盖环境准备、核心算法实现、性能优化及常见问题解决方案,适合嵌入式开发者参考。

weixin_30735745的博客 403

Linux shell——检查数组中是否包含某个元素

代码如下: echo "${inputs[@]}" | grep "\<$str\>" > str.txt #匹配数组inputs中包含变量$str的元素,输出到str.txt if [ -s str.txt ];then ## 通过str.txt是否为空来判断数组中是否包含匹配的元素 echo 'YES!' else echo 'NO!' fi ...

qq_36480087的博客 5511

从仿真到器件:铌酸锂电光调制器Comsol建模避坑指南

本文详细介绍了铌酸锂电光调制器在Comsol中的建模全流程,涵盖晶体切向选择、材料参数配置、多物理场耦合等关键技术。通过实战案例和调试技巧,帮助工程师避开常见建模陷阱,提升仿真精度与效率,特别适用于高速光通信系统的器件设计与优化。

m2n3b4v5c6的博客 419

【GD32篇】驱动AD7616完成数据采集

GD32F10X驱动AD7616完成数据采集

we_long的博客 1万+

【shell】shell 数组处理

echo "数组的元素个数为: ${#my_array[*]}"echo "数组的元素个数为: ${#my_array[@]}"echo "数组的元素为: ${my_array[*]}"echo "数组的元素为: ${my_array[@]}"Bash Shell 只支持一维数组(不支持多维数组)echo "数组的键为: ${!echo "数组的键为: ${!获取数组长度的方法与获取字符串长度的方法相同。使用 @ 或 * 可以获取数组中的所有元素。关联数组的键是唯一的。获取数组中的所有元素。

我的笔记本 3085

C/C++面试八股文汇总

以对象管理资源,利用的就是C++构造的对象最终会被对象的析构函数销毁的原则。上述的的申请、使用、释放资源的程序较为简单,但是如果程序很复杂的时候,需要为所有的new 分配的内存delete掉,导致极度臃肿,效率下降,更可怕的是,程序的可理解性和可维护性明显降低了,当操作增多时,处理资源释放的代码就会越来越多,越来越乱。栈在函数调用时,第一个进栈的是主函数中后的下一条指令(函数调用语句的下一条可执行语句)的地址,然后是函数的各个参数,在大多数的C编译器中,参数是由右往左入栈的,然后是函数中的局部变量。

wzzrh的博客 1万+

shell中的判断

1 ] || [ $b = 2 ],而双括号就可以解决这个问题的,[[ $a!又比如这个[ "$a" -lt "$b" ],也可以改成双括号的形式(("$a" < "$b"))3 注意到"$test"x最后的x,这是特意安排的,因为当$test为空的时候,上面的表达式就变成了x = testx,显然是不相等的。[ 文件1 -ot 文件2 ] 为真 如果 文件1 比 文件2 旧, 或者 文件2 存在而且 文件1 不存在。[ -g 文件 ] 为真 如果 文件 存在 而且 已经设置了他的 SGID 位。

奇华资料的博客 1986

神经影像和人类基因组关联分析的实践过程

现代全脑转录图谱为研究脑组织的分子相关性提供了前所未有的机会,可以使用无创神经成像进行量化。然而,将神经影像学数据与转录组测量相结合并不是直截了当的,需要仔细考虑才能做出有效的推断。在本文中,我们回顾了最近的研究工作,探讨了不同的方法选择如何影响成像转录组学分析的三个主要阶段,包括1)转录图谱数据的处理;2)将转录测量与独立衍生的神经影像学表型相关联;3)通过基因富集分析评估鉴定的关联的功能意义。我们的目标是为这个快速发展的领域促进标准化和可复制方法的发展。

从事脑科学核磁共振方法学研究,在Nature communications等权威期刊发表研究论文,熟练掌握磁共振处理方法和统计学方法,欢迎大家和我交流。 2201

CATIA二次开发——遍历几何图形集下的轴系及控制轴系生成位置

CATIA二次开发——轴系相关问题1.遍历几何图形集下的轴系2.解决轴系生成位置的问题 1.遍历几何图形集下的轴系 近期遇到的问题:遍历轴系的时候发现,AxisSystem属性的轴系只有放在轴系集合下,才能被找到,放在几何图形集或其他位置均不能被找到。本来想遍历几何图形集下的轴系元素,但是发现没有对应的属性,只能查找 几何图形集、几何元素、草图等元素,无法直接遍历轴系。 解决办法:(加入选择集,在选择集中筛选轴系类型) HybridBody axisHB = activePart.HybridBodies

WorkMan的博客 2731

shell 数组元素有空格_Shell数组:Shell数组定义以及获取数组元素

和其他编程语言一样,Shell 也支持数组。数组(Array)是若干数据的集合,其中的每一份数据都称为元素(Element)。Shell 并且没有限制数组的大小,理论上可以存放无限量的数据。和 C++、Java、C# 等类似,Shell 数组元素的下标也是从 0 开始计数。获取数组中的元素要使用下标[ ],下标可以是一个整数,也可以是一个结果为整数的表达式;当然,下标必须大于等于 0。遗憾的是,常...

weixin_39683526的博客 529

GEE训练教程:基于Sentinel-2卫星的归一化建筑指数(NDBI)等的进行城市扩张分析

本文介绍利用Sentinel-2卫星数据和谷歌地球引擎平台监测印度卡姆鲁普都会区2018-2024年城市扩张的方法。通过计算归一化建筑指数(NDBI)、植被指数(NDVI)和水体指数(MNDWI),采用多阈值规则识别建设用地,并量化不同年份的城市扩张面积。代码实现了从数据预处理、指数计算到面积统计的完整流程,为城市扩张研究提供了可复制的技术方案。关键参数包括年份选择、云覆盖阈值和分类阈值,均可根据研究需求调整。该方法能有效追踪城市边界变化,为城市规划提供数据支持。

此星光明博客 135

Linux数组定义和获取,Shell数组:Shell数组定义以及获取数组元素

和其他编程语言一样,Shell也支持数组。数组(Array)是若干数据的集合,其中的每一份数据都称为元素(Element)。Shell并且没有限制数组的大小,理论上可以存放无限量的数据。和C++、Java、C#等类似,Shell数组元素的下标也是从0开始计数。获取数组中的元素要使用下标[],下标可以是一个整数,也可以是一个结果为整数的表达式;当然,下标必须大于等于0。遗憾的是,常用的BashShe...

weixin_28778341的博客 682

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Shell - 学习笔记 - 2.11 - Shell数组:Shell数组定义以及获取数组元素

Shell 数组的长度不是固定的,定义之后还可以增加元素。数组(Array)是若干数据的集合,其中的每一份数据都称为元素(Element)。获取数组中的元素要使用下标[ ],下标可以是一个整数,也可以是一个结果为整数的表达式;另外,这里的“*” 和 “@” 的区别,和之前显示整个参数列表的功能的区别是一样的。遗憾的是,常用的 Bash Shell 只支持一维数组,不支持多维数组。第三个元素就是一个“异类”,前面两个元素都是整数,而第三个元素是字符串。表示输出 nums 数组的第 3 个元素。

guoqx的专栏 640

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Linux shell编程学习笔记15:定义数组、获取数组元素值和长度、数组拼接或合并

数组是一种常见的数据结构。跟大多数编程语言一样,大多数Linux shell脚本支持数组,但对数组的支持程度各不相同,比如数组的维度,是支持一维数组还是多维数组?再如,数组元素的下标是从 0 开始还是从1开始?则因shell而异,下面我们以zsh、sh、bash为例来讲解定义数组、获取数组元素值和长度的方法。

Purpleendurer@优快云 2704

shell数组、关联数组

文章目录1、基本数组(1)数组的定义(3)获取数组元素(4)统计数组元素的个数(5)获取数组元素的索引(6)获取数组下标从n开始的所有元素(7)从数组下标n开始,获取m个元素2、关联数组(1)关联数组的声明(2)关联数组赋值(3)访问关联数组元素(4)获取关联数组元素的个数 数组中可以存放多个值。bash shell只支持一维数组,初始化无序定义数组大小。数组元素下标由0开始。 1、基本数组 (1)数组的定义 在shell中,使用括号()来表示数组,数组元素之间用空格来分割 方法1: 数组名称=(元素1 元

菜鸟的博客 2943

shell数组

数组 普通数组 定义: array_name=(元素1 元素2 元素3 …) 元素之间用空格隔开。这样做索引是默认了的(0,1,2,3…),也可以指定索引,如:array_name=(元素1 元素2 元素3 [20]=元素4) 也可一个一个定义:array_name[0]=ss,array_name[1]=s,… 访问数组元素:${array_name[索引]},不加索引,访问的是第一个元素,C语言似乎也是这么回事。 array_name=(命令/变量),可以将命令的结果或变量作为数组元素

未来的路 193

Shell数组和排序

文章目录 一、数组 1、数组定义方法 方法一:数组名=(value0 value1 value2 …) 方法二:数组名=

whb1751178448的博客 579

【shell】数组

定义: 有两种方法: 1.采用()a=(10 20 30)2.采用下标: a[2]=1 获取全部元素: echo ${a[*]} 获取长度: echo ${#a[*]} 遍历: 1.类似于for each: for i in ${a[*]};do echo $i done 2.采用c语言for循环语法,下标方式: for ((i=0; i

u010900754的专栏 228

Shell脚本:数组(穿插四种排序算法)

目 录一、认识Shell数组①数组的定义方法②获取数组长度③获取数据列表④读取某下表赋值⑤数组遍历⑥数组切片⑦数组替换⑦数组删除⑧数组追加元素函数与数组①从函数返回数组②数组排序算法1)冒泡排序2)直接选择排序3)反转排序4)希尔排序 一、认识Shell数组 数组的数据类型:数值类型和字符类型 ①数组的定义方法 #!/bin/bash (30 20 10 60 50 40) 0 1 2 3 4 5 方法1: 数组名= (value0 value1 value2 ...) 方法2: 数组名

萧碧宰治的博客 779

shell基础---Shell数组定义以及获取数组元素

Shell数组:Shell数组定义以及获取数组元素 和其他编程语言一样,Shell 也支持数组。数组(Array)是若干数据的集合,其中的每一份数据都称为元素(Element)。 Shell 并且没有限制数组的大小,理论上可以存放无限量的数据。和C++、Java、C#等类似,Shell 数组元素的下标也是从 0 开始计数。 获取数组中的元素要使用下标[ ],下标可以是一个整数,也可以是一个结果为整数的表达式;当然,下标必须大于等于 0。 遗憾的是,常用的 Bash Shell 只支持一维数组,不支持多..

会哭的雨@的博客 8040
上一篇: k8s 中mysql 无法访问_故障排查:Kubernetes 中 Pod 无法正常解析域名
下一篇: Servlet、Servlet容器等内容讲解
Jerry00713
博客等级 码龄11年 273粉丝 89原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值