【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 的 下一个更大的元素 是按数组遍历顺序,这个数字之…

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

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

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

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

对象克隆学习

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

代理(Proxy)模式

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

C++初级(三)

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

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

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

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

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

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

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

citeSpace保姆级安装使用教程

citeSpace保姆级安装使用教程 文章目录 citeSpace保姆级安装使用教程CiteSpace功能与参数区安装使用知网数据导出citespace数据导入结果 设置操作隐藏节点 CiteSpace功能与参数区 安装 citeSpace安装教程 citespace下载 网址:https://citespace.podia.com/ 安装之…

STM32使用中断方式进行USART数据收发以及printf函数的重写

时间记录:2024/1/5 一、USART/UART介绍 协议介绍 (1)起始位,一位逻辑电平0表示 (2)数据位,8-9位,逻辑高低电平,一般使用8位 (3)校验位&#xff…

2-sql注入之sqli-labs靶场搭建

文章目录 SQL注入之sqli-labs靶场搭建1、Sqli-labs环境安装需要安装以下环境工具下载链接: 2、phpstudy连接mysql总是启动了又停止第一种情况可能是端口占用问题第二种情况就是曾经在电脑上安装过mysql SQL注入之sqli-labs靶场搭建 Sqli-labs是一个印度程序员写的&…

vmware中ubuntu虚拟机不能够用共享文件夹

有时候发现装好虚拟机后,然后 虚拟机-设置-选项-共享文件夹 然后使用快捷键ctrlaltt 打开命令行,cd /mnt下没有看到hgfs文件夹 解决办法是安装vmware tools工具 此时想通过点击 虚拟机-安装vmwaretools工具 按钮 居然发现该按钮是灰色的&#xff0…

CMake入门教程【核心篇】动态库(dll, so)

😈「CSDN主页」:传送门 😈「Bilibil首页」:传送门 😈「动动你的小手」:点赞👍收藏⭐️评论📝 文章目录 CMake入门教程【核心篇】动态库(dll, so)1.简介2.动态库的优势3.动态库的劣势4.创建动态库5.完整代码示例6.实战使用技巧与注意事项

实现文件拖拽上传的功能

1 先来看一下效果 2 我们来看一下代码执行的结果: 我们创建目标的容器盒子 和可以展示数据的ul 监听进入目前盒子的事件 3 文件进入目标容器中解析文件

Python中 的函数介绍

函数 在Python中,函数是用来执行某种功能的 函数定义 def function_name(参数列表):代码块[return val]比如 #---------------定义------------- def add_3(num):newnum num3return newnumnum 3 print(add_3(num))函数调用 def add_3(num):newnum num3return newnumnum …

科研上新 | 第6期:优化LLM数学推理;深度学习建模基因表达调控;基于深度学习的近实时海洋碳汇估算

编者按:欢迎阅读“科研上新”栏目!“科研上新”汇聚了微软亚洲研究院最新的创新成果与科研动态。在这里,你可以快速浏览研究院的亮点资讯,保持对前沿领域的敏锐嗅觉,同时也能找到先进实用的开源工具。 本期内容速览 …

在 IDEA 中创建JavaWeb 项目的方式(超详细步骤教程和遇到的问题)

目录 0-1项目图片操作步骤链接0-2项目结构预览1.新建Project2.定义项目名称3.创建完成后项目结构4.创建config文件夹4.1 作用 5.在WEB-INF下创建lib文件夹5.1然后搞几个常用的jar包放入5.1.1jar包全选中后右键选择放入类库5.1.2jar包全选中后右键选择放入类库 6.创建src下文件夹…

软件测试金融项目经验总结,面试题都问什么?

1、APP端/客户端接口加解密介绍 加密方式(两种): 在TCP/IP四层模型中的应用层进行加密。类似密码本,当前项目使用的是这种,可以看到所有响应内容,只是看不懂。 在TCP/IP四层模型中的运输层和应用层之间进行…

「Vue3面试系列」Vue3 所采用的 Composition Api 与 Vue2 使用的 Options Api 有什么不同?

文章目录 开始之前正文一、Options Api二、Composition Api三、对比逻辑组织Options APICompostion API 逻辑复用 小结 开始之前 Composition API 可以说是Vue3的最大特点,那么为什么要推出Composition Api,解决了什么问题? 通常使用Vue2开…