【Linux Shell】4. 数组

文章目录

  • 【 1. 数组的定义 】
  • 【 2. 读取数组 】
  • 【 3. 关联数组 】
    • 3.1 关联数组的定义
    • 3.2 关联数组元素的调用
  • 【 4. 获取数组中的所有元素 】
  • 【 5. 获取数组的长度 】

  • 数组中可以存放多个值。 Bash Shell 只支持一维数组(不支持多维数组),初始化时不需要定义数组大小。
  • 与大部分编程语言类似, Shell 数组元素的下标由 0 开始。

【 1. 数组的定义 】

  • Shell 数组用括号来表示,元素用"空格"符号分割开,语法格式如下:
数组名=(值1 值2 ... 值n)
  • 实例:一个正确的数组
#!/bin/bash
my_array=(A B "C" D)

或者

array_name=(
value0
value1
value2
value3
)
  • 使用数字下标来定义数组, 可以不使用连续的下标,而且下标的范围没有限制 。如下所示:
array_name[0]=value0
array_name[1]=value1
array_name[2]=value2

【 2. 读取数组 】

  • 读取数组元素值的一般格式是:
${数组名[下标]}
  • 实例:通过数字索引读取数组元素
#!/bin/bash
my_array=(A B "C" D)echo "FirstParameter:${my_array[0]}"
echo "SecondParameter:${my_array[1]}"
echo "ThirdParameter:${my_array[2]}"
echo "FourthParameter:${my_array[3]}"

在这里插入图片描述

【 3. 关联数组 】

  • Bash 支持关联数组, 可以使用任意的字符串、或者整数作为下标来访问数组元素。
  • 关联数组的键是唯一的。

3.1 关联数组的定义

  • 关联数组使用 declare 命令 来声明,语法格式如下:-A 选项就是用于声明一个关联数组。
declare -A array_name
  • 实例1:创建一个关联数组 site,并创建不同的键值。
declare -A site=(["google"]="www.google.com" ["runoob"]="www.runoob.com" ["taobao"]="www.taobao.com")
  • 实例2:先声明一个关联数组,然后再设置键和值。
declare -A site
site["google"]="www.google.com"
site["runoob"]="www.runoob.com"
site["taobao"]="www.taobao.com"

3.2 关联数组元素的调用

  • 访问关联数组元素可以使用指定的键,格式如下:
array_name["index"]
  • 实例:通过键来访问关联数组的元素。
declare -A site
site["google"]="www.google.com"
site["runoob"]="www.runoob.com"
site["taobao"]="www.taobao.com"echo ${site["runoob"]}

在这里插入图片描述

【 4. 获取数组中的所有元素 】

  • 使用 @ 或 * 可以获取数组中的所有元素。
${my_array[*]}或者${my_array[@]}
  • 实例1:获取数组中的所有元素。
#!/bin/bashmy_array[0]=A
my_array[1]=B
my_array[2]=C
my_array[3]=Decho "数组的元素为: ${my_array[*]}"
echo "数组的元素为: ${my_array[@]}"

在这里插入图片描述

  • 实例2:获取数组的所有键。
declare -A site
site["google"]="www.google.com"
site["runoob"]="www.runoob.com"
site["taobao"]="www.taobao.com"
echo "数组的键为: ${!site[*]}"
echo "数组的键为: ${!site[@]}"

在这里插入图片描述

【 5. 获取数组的长度 】

  • 获取数组长度的方法与获取字符串长度的方法相同。
length=${#array_name[@]}
# 或者
length=${#array_name[*]}
  • 获取数组单个元素的长度
length=${#array_name[下标]}
  • 实例:获取数组的长度。
#!/bin/bashmy_array[0]="19527"
my_array[1]=B
my_array[2]=C
my_array[3]=Decho "数组元素个数为: ${#my_array[*]}"
echo "数组元素个数为: ${#my_array[@]}"
echo "数组第1个元素的长度为: ${#my_array[0]}"

在这里插入图片描述

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

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

相关文章

算法训练第五十九天|503. 下一个更大元素 II、42. 接雨水

503. 下一个更大元素 II: 题目链接 给定一个循环数组 nums ( nums[nums.length - 1] 的下一个元素是 nums[0] ),返回 nums 中每个元素的 下一个更大元素 。 数字 x 的 下一个更大的元素 是按数组遍历顺序,这个数字之…

AutoCAD 中镜像 操作

在 AutoCAD 中,镜像是一种常用的操作,可以在绘图过程中快速进行镜像对称。以下是 AutoCAD 中进行镜像操作的常用快捷键命令: 1. 镜像命令:MIRROR 或 MI - 输入 MIRROR 或 MI,然后按 Enter 键启动镜像命令。 2. 指定第一点:F 或 F+Enter - 输入 F 或 F+Enter,然后选择…

影响服务器正常使用的有哪些因素

对于网站优化来说,网站服务器的优化绝对是基础。不管是用户还是搜索引擎对于网站的打开速度都是没有太多耐心的, 所以网站优化的就是要保证网站服务器稳定,网站正常且快速的打开 1.用户体验较差 现在越来越强调用户体验,设想一…

imgaug库指南(五):从入门到精通的【图像增强】之旅

引言 在深度学习和计算机视觉的世界里,数据是模型训练的基石,其质量与数量直接影响着模型的性能。然而,获取大量高质量的标注数据往往需要耗费大量的时间和资源。正因如此,数据增强技术应运而生,成为了解决这一问题的…

游戏化教学在高校平台基础课程中的实践与学习体验提升

在高职计算机学院,无论计算机应用技术、软件技术、大数据应用技术还是人工智能应用等不同专业方向的学生,首先要接触和掌握一系列的基础平台课程。这些课程不仅包括政治、英语、数学等文化基础知识内容,更关键的是涉及网页设计基础、编程基础…

智慧校园全空间三维电子沙盘系统

一、概述 易图讯科技(www.3dgis.top)采用大数据、云计算、虚拟现实、物联网、AI等先进技术,自主可控高性能WebGIS可视化引擎,支持多用户客户端通过网络请求访问服务器地图和专题数据,提供地理信息数据、专题数据的并发…

MW Open - 高效率的API接口管理工具

本文将会详细介绍 MW Open,一个高效率的 API 接口管理工具,并提供相关代码示例。 一、简介 MW Open 是一款开源的 API 接口管理工具,支持管理 API 接口、测试 API 接口、生成 API 文档等功能。MW Open 拥有简洁明了的接口管理界面&#xff…

对象克隆学习

假如说你想复制一个简单变量。很简单: int apples 5; int pears apples; 不仅仅是int类型,其它七种原始数据类型(boolean,char,byte,short,float,double.long)同样适用于该类情况。 但是如果你复制的是一个对象,情况就有些复杂了。 …

vue插件--xterm封装

安装 npm install xterm xterm-addon-fit -D两种模式 log:日志输出shell:终端命令 <template><div :id"id" class"xterm"></div> </template> <script> import { defineComponent, onMounted, onBeforeUnmount, watch, n…

Centos7.9和Debian12部署Minio详细流程

一、安装minio Centos wget https://dl.min.io/server/minio/release/linux-amd64/archive/minio-20230227181045.0.0.x86_64.rpm -O minio.rpm sudo dnf install minio.rpmDebian wget https://dl.min.io/server/minio/release/linux-amd64/archive/minio_20230227181045.0…

axios的七大特性

1、在浏览器中发送 XMLHttpRequests 请求&#xff1b; 2、在 node.js 中发送 http请求&#xff1b; 3、基于 promise 的 HTTP 库&#xff0c;支持promise所有的API 4、拦截请求和响应&#xff1b;&#xff08;修改请求数据&#xff0c;只能用在PUT,POST和PATCH这几个请求方法&…

代理(Proxy)模式

代理&#xff08;Proxy&#xff09;模式介绍 作用&#xff1a;通过代理可以控制访问某个对象的方法&#xff0c;在调用这个方法前做前置处理&#xff0c;调用这个方法后做后置处理。&#xff08;即&#xff1a; AOP的微观实现&#xff01;&#xff09; 核心角色 抽象角色(接口…

C++初级(三)

我们这里还是在C基础上进行对C基础语法的补充学习&#xff01; 一.C数组 C数组大体和C相同&#xff0c;但是C数组还是有一定的区别的。 我们先看看C和C数组共同的易错点知识&#xff1a; 1.数组只能一次初始化。 2.如果对数组只进行一部分初始化&#xff0c;那么其他未初始…

PHP写一个函数能够遍历一个文件夹下的所有文件和子文件夹

社区版本可以用 function myscandir($dir) { $files array(); if ( $handle opendir($dir) ) { while ( ($file readdir($handle)) ! false ) { if ( $file ! ".." && $file ! "." ) { if ( isdir($dir . "/" . $file) ) { $…

[ABC334E] Christmas Color Grid 1

洛谷题目链接 Atcoder题目链接 分析 发现将每个红色连通块涂成绿色连通块后&#xff0c;绿色连通块个数会加一&#xff0c;但是如果这个连通块之前已经跟绿色连通块相邻&#xff0c;则连通块数量减一。 代码 #include <bits/stdc.h> #define int long longusing nam…

11. 线程

11. 线程 1. 线程概述1.1 线程概念1.1.1 什么是线程1.1.2 线程是如何创建起来的1.1.3 线程的特点1.1.4 线程与进程 1.2 并发和并行 2. 线程 ID3. 创建线程4. 终止线程5. 回收线程6. 取消线程6.1 取消一个线程6.2 取消状态以及类型6.3 取消点6.4 线程可取消性的检测 7. 分离线程…

【React系列】Hook(一)基本使用

本文来自#React系列教程&#xff1a;https://mp.weixin.qq.com/mp/appmsgalbum?__bizMzg5MDAzNzkwNA&actiongetalbum&album_id1566025152667107329) 一. 认识hook 1.1. 为什么需要hook Hook 是 React 16.8 的新增特性&#xff0c;它可以让我们在不编写class的情况下…

OpenFeign相关问题及答案(2024)

1、什么是OpenFeign&#xff0c;它如何简化远程服务调用&#xff1f; OpenFeign是一个声明式的Web服务客户端&#xff0c;它使得编写HTTP客户端变得更加容易。它属于Spring Cloud Netflix项目的一部分&#xff0c;可以与Spring Boot应用轻松集成。通过使用OpenFeign&#xff0…

群晖Docker部署HomeAssistant容器结合内网穿透远程控制家中智能设备

目录 一、下载HomeAssistant镜像 二、内网穿透HomeAssistant&#xff0c;实现异地控制智能家居 三、使用固定域名访问HomeAssistant 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。 点击跳转到网站 Ho…

Guava Cache 异步刷新技巧,你值得拥有!

以下文章来源于勇哥Java实战 &#xff0c;作者勇哥 Guava Cache是一款非常优秀的本地缓存框架。 这篇文章&#xff0c;我们聊聊如何使用 Guava Cache 异步刷新技巧带飞系统性能 。 1 经典配置 Guava Cache 的数据结构跟 JDK1.7 的 ConcurrentHashMap 类似&#xff0c;提供了基…