SHELL中的数组及其相关操作

快捷查看指令 ctrl+f 进行搜索会直接定位到需要的知识点和命令讲解(如有不正确的地方欢迎各位小伙伴在评论区提意见,博主会及时修改)

数组

在shell中,可以使用数组来存储和操作一组数据。数组是由一个或多个元素组成的有序集合,可以使用索引来访问每个元素。
数组变量中,可以存储多个值。
数组,就是多个元素的集合,能够把多个元素,通过一个变量名进行存储 然后再给元素挨个打标记[下标]
特征:

  1. 数组内的值相互独立
  2. 数组内每个值的都有对应的标识-----下标{可以连续 可以不连续}

在shell中,可以使用以下方式定义数组:

my_array=(element1 element2 element3 ...)
数组名=(值1 值2 值3 值4...)

其中,my_array是数组名,element1、element2、element3等是数组元素。注意,数组元素之间需要用空格分隔开。

访问数组元素可以使用下标。在shell中,数组下标从0开始。例如,访问my_array数组的第一个元素可以使用以下方式:

echo ${my_array[0]}

下面是一些数组的常规操作:

1. 声明并赋值

array=(“小黑”,“小白”,“小兰”)

2. 键值对的赋值方式来创建数组

heros=([0]=“程咬金” [1]=“花木兰” [2]=“芈月” [3]=“伽罗”)
heros2=([3]=“小乔” [1]=“大乔” [5]=“安琪拉” [2]=“典韦”)

3.动态定义数组

myArray=(ls /abc) ## 反引号的特点是先执行指令,再将指令输出
myArray1=($(ls /baizhi)) ## 作用同上

4. 采用命令创建数组

declare -a 数组名 ## 不推荐
read -a 数组名 ## 不推荐

注意:

  1. 下标可以不连续,可以指定下标,存储时,会按照下标进行排序存储
  2. 若下标冲突,元素之间会出现覆盖
    数组名[下标]=新值
    若指定的下标重复 ------- 修改
    若执行的下标不存在 ------ 添加

以下是一些常用的数组操作:

# 1. 获取指定数组元素
${数组名[下标]}
[root@bai bai]# echo ${heros[0]}
程咬金# 2.获取所有数组元素
[root@bai bai]# echo ${heros[*]}
程咬金 花木兰 芈月 伽罗
[root@bai bai]# echo ${heros[@]}
程咬金 花木兰 芈月 伽罗# 3.逐个获取数组元素
#! /bin/bash
for var in $*   ## $* 代表执行该文件时,传递的所有参数
do
echo $var
done# 4.获取数组元素的个数
[root@bai bai]# echo ${#heros[*]}
5
[root@centos-128 abc]# echo ${heros[*]} | wc -w
6
[root@centos-128 abc]# echo ${heros[@]} | awk '{print NF}'
6# 5.删除数组元素
## 1. 删除所有数组元素unset 数组名
## 2.单独删除某个数组元素unset 数组名[下标]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/147698.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

springboot生成PDF,并且添加水印

/*** 导出调查问卷*/ApiLog("导出调查问卷")PostMapping("/print/{id}")ApiOperationSupport(order 23)ApiOperation(value "导出报告", notes "导出报告")public void print(PathVariable Long id, HttpServletResponse response…

CentOS7设置 redis 开机自启动

CentOS7设置 redis 开机自启动 步骤1.创建redis.service文件2.重新加载所有服务3.设置开机自启动4.自由地使用linux系统命令4.1.启动 Redis 服务4.2.查看 Redis 状态(-l:查看完整的信息)4.3.停止 Redis 服务4.4.重启 Redis 服务 步骤 如果你傲娇,不想拷贝&#xff0…

PDF控件Spire.PDF for .NET【转换】演示:将PDF 转换为 HTML

由于各种原因,您可能想要将 PDF 转换为 HTML。例如,您需要在社交媒体上共享 PDF 文档或在网络上发布 PDF 内容。在本文中,您将了解如何使用Spire.PDF for .NET在 C# 和 VB.NET 中将 PDF 转换为 HTML。 Spire.Doc 是一款专门对 Word 文档进行…

虹科示波器 | 汽车免拆检修 | 2015款奔驰G63AMG车发动机偶尔自动熄火

一、故障现象 一辆2015款奔驰G63AMG车,搭载157发动机,累计行驶里程约为9.4万km。车主反映,该车低速行驶时,发动机偶尔会自动熄火,故障大概1个星期出现1次。 二、故障诊断 接车后路试,故障未能再现。用故障检…

机器人制作开源方案 | 智能快递付件机器人

一、作品简介 作者:贺沅、聂开发、王兴文、石宇航、盛余庆 单位:黑龙江科技大学 指导老师:邵文冕、苑鹏涛 1. 项目背景 受新冠疫情的影响,大学校园内都采取封闭式管理来降低传染的风险,导致学生不能外出&#xff0c…

GNU gold链接器 - target.cc 实现特定目标架构的支持

一、Target::do_is_local_label_name(const char* name) const 1. object.cc 中 调用target().is_local_label_name(name) 这段代码是在链接器中用于决定是否应该丢弃本地符号的部分。它包含了一些逻辑,以便在满足特定条件时丢弃本地符号。下面是关键部分的解释&…

SpringCloud微服务:Nacos和Eureka的区别

目录 配置: 区别: ephemeral设置为true时 ephemeral设置为false时(这里我使用的服务是order-service) 1. Nacos与eureka的共同点 都支持服务注册和服务拉取 都支持服务提供者心跳方式做健康检测 2. Nacos与Eu…

【git】一些容易混淆的操作

git clone vs git init: git clone:用于从现有的 Git 仓库复制一个副本到本地。这通常是参与一个已存在项目的起始步骤。git init:用于在本地创建一个新的 Git 仓库。这是开始一个全新项目的第一步。 git add vs git commit: git add:将更改…

在服务器导出kafka topic数据

使用Kafka自带的工具:Kafka提供了一个命令行工具kafka-console-consumer,可以用来消费指定Topic的数据并将其打印到控制台。 1.打印到控制台 命令如下: kafka-console-consumer.sh --bootstrap-server $kafkaHost --topic $topicName --from-…

【广州华锐互动】VR可视化政务服务为公众提供更直观、形象的政策解读

虚拟现实(VR)技术正在逐渐应用于政务服务领域,为公众提供更加便捷、高效和个性化的服务体验。通过VR眼镜、手机等设备,公众可以在虚拟环境中参观政务服务中心,并根据自己的需求选择不同的办事窗口或事项进行咨询和办理…

06-流媒体-YUV数据在SDL控件显示

整体方案: 采集端:摄像头采集(YUV)->编码(YUV转H264)->写封装(H264转FLV)->RTMP推流 客户端:RTMP拉流->解封装(FLV转H264&#xff09…

SQL零基础入门教程,贼拉详细!贼拉简单! 速通数据库期末考!(七)

LEFT JOIN LEFT JOIN 同样用于关联两个表,ON 关键字后指定两个表共有的字段作为匹配条件,与 INNER JOIN 不同的地方在于匹配不上的数据行,INNER JOIN 对两表匹配不上的数据行不返回结果,而 LEFT JOIN 只对右表(table2…

Rust根据条件删除相邻元素:dedup

文章目录 示例dedup_bydedup_by_key Rust系列:初步⚙所有权⚙结构体和枚举类⚙函数进阶⚙泛型和特征⚙并发和线程通信 示例 Rust中的动态数组Vec提供了dedup函数,用于删除相邻重复元素。此外,还提供了dedup_by和dedup_by_key,可…

STM32外部中断(EXTI)与RTOS多任务处理的协同设计

当在STM32上使用外部中断(EXTI)与RTOS(Real-Time Operating System,实时操作系统)进行多任务处理时,需要设计合适的协同机制,以确保可靠的中断处理和任务调度。在下面的概述中,我将介…

【shell 常用脚本30例】

先了解下编写Shell过程中注意事项 开头加解释器:#!/bin/bash语法缩进,使用四个空格;多加注释说明。命名建议规则:全局变量名大写、局部变量小写,函数名小写,名字体现出实际作用。默认变量是全局的&#xf…

AnimateDiff搭配Stable diffution制作AI视频

话不多说,先看视频 1. AnimateDiff的技术原理 AnimateDiff可以搭配扩散模型算法(Stable Diffusion)来生成高质量的动态视频,其中动态模型(Motion Models)用来实时跟踪人物的动作以及画面的改变。我们使用 …

MongoDB之索引和聚合

文章目录 一、索引1、说明2、原理3、相关操作3.1、创建索引3.2、查看集合索引3.3、查看集合索引大小3.4、删除集合所有索引(不包含_id索引)3.5、删除集合指定索引 4、复合索引 二、聚合1、说明2、使用 总结 一、索引 1、说明 索引通常能够极大的提高查…

安卓手机投屏到电视,跨品牌、跨地域同样可以实现!

在手机网页上看到的视频,也可以投屏到电视上看! 长时间使用手机,难免脖子会酸。这时候,如果你将手机屏幕投屏到大电视屏幕,可以减缓脖子的压力,而且大屏的视觉体验更爽。 假设你有一台安卓手机,…

Pycharm之配置python虚拟环境

最近给身边的人写了脚本,在自己电脑可以正常运行。分享给我身边的人,却运行不起来,然后把报错的截图给我看了,所以难道不会利用pycharm搭建虚拟的环境?记录一下配置的过程。 第一步:右键要打开的python的代…

科大讯飞会议笔记本、GoodNotes、E人E本 功能及体验对比

科大讯飞会议笔记本、GoodNotes、E人E本功能及体验对比 【旧文档,怕失传】 通过对科大讯飞会议笔记本、基于iPad的GoodNotes以及E人E本的各项功能指标进行了实际对比,得出了以下结果: 在实际体验中,科大讯飞笔记本在录音方面表…