当前位置: 首页 > news >正文

shell 学习笔记:数组

目录

1. 定义数组        

2. 读取数组元素值

3. 关联数组

4. 在数组前加一个感叹号 ! 可以获取数组的所有键

5. 在数组前加一个井号 # 获取数组的长度

6. 数组初始化的时候,也可以用变量

7. 循环输出数组的方法

7.1 for循环输出

7.2 while循环输出

7.2.1 let i++ 自增

7.2.2 let i+=1 自增

7.2.3 let "i++" 或 let "i+=1" 自增也行


1. 定义数组        

  • 数组中可以存放多个值。Bash Shell 只支持一维数组
  • 初始化时不需要定义数组大小。
  • 数组元素的下标由 0 开始。
  • shell 数组用括号 () 来表示,元素用空格符号分割开

语法格式如下:

arr=(v1 v2 v3 ... vn)
arr=(a b 1 2 AB)
for v in ${arr[*]}
doecho $v
done

2. 读取数组元素值

读取数组元素值的一般格式为:${数组名[下标]},比如:arr=(1 2),第一个元素为 ${arr[0]}

使用 ${数组名[*]} 或 ${数组名[@]} 可以获取到一个数组的所有元素列表

arr=(a b 1 2 AB)
echo ${arr[0]}
echo ${arr[4]}
echo "------------"
echo ${arr[*]}
echo "------------"
for v in ${arr[*]}
doecho $v
done
echo "------------"
echo ${arr[@]}
for v in ${arr[@]}
do echo $v
done

3. 关联数组

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

关联数组使用 declare 命令来声明,格式如下:

declare -A array_name

-A 选项是用于声明一个关联数组。

关联数组的键是唯一的。

示例:创建一个关联数组 website,并创建不同的键值:

declare -A website=(["baidu"]="www.baidu.com" ["huawei"]="www.huawei.com")
echo ${website["baidu"]}
echo ${website["huawei"]}

也可以先声明一个关联数组,然后再设置键和值:

declare -A website
website["baidu"]="www.baidu.com"
website["huawei"]="www.huawei.com"
echo ${website["baidu"]}
echo ${website["huawei"]}

4. 在数组前加一个感叹号 ! 可以获取数组的所有键

declare -A website
website["baidu"]="www.baidu.com"
website["huawei"]="www.huawei.com"
echo ${!website[*]}

5. 在数组前加一个井号 # 获取数组的长度

declare -A website
website["baidu"]="www.baidu.com"
website["huawei"]="www.huawei.com"
echo ${#website[*]}

6. 数组初始化的时候,也可以用变量

ivar=1
arr=($ivar 3 5)
for v in ${arr[*]}
doecho $v
done

7. 循环输出数组的方法

7.1 for循环输出

arr=(1 2 3)
for v in ${arr[*]}
doecho $v
done

7.2 while循环输出

7.2.1 let i++ 自增
arr=(1 2 3)
i=0
while [ $i -lt ${#arr[@]} ]
doecho ${arr[$i]}let i++
done

7.2.2 let i+=1 自增
arr=(1 2 3)
i=0
while [ $i -lt ${#arr[@]} ]
doecho ${arr[$i]}let i+=1
done

7.2.3 let "i++" 或 let "i+=1" 自增也行
arr=(1 2 3)
i=0
while [ $i -lt ${#arr[@]} ]
doecho ${arr[$i]}let "i+=1"
done
echo "----------"
j=0
while [ $j -lt ${#arr[*]} ]
doecho ${arr[$j]}let "j++"
done

注:本文是学习笔记,文字描述主要摘抄自

Shell 数组 | 菜鸟教程

相关文章:

shell 学习笔记:数组

目录 1. 定义数组 2. 读取数组元素值 3. 关联数组 4. 在数组前加一个感叹号 ! 可以获取数组的所有键 5. 在数组前加一个井号 # 获取数组的长度 6. 数组初始化的时候,也可以用变量 7. 循环输出数组的方法 7.1 for循环输出 7.2 while循环输出 7.2.1 …...

计算机基础知识复习9.5

数据交换 电路交换:交换信息的两个主机之间简历专用通道,传输时延小,实时性强,效率低,无法纠正错误。 报文交换:信息拆分成小包(报文)大小无限制,有目的/源等信息提高利用率。有转…...

spark.sql

from pyspark.sql import SparkSession from pyspark.sql.functions import col, count, mean, rank, row_number, desc from pyspark.sql.window import Window from pyspark.sql.types import StructType, StructField, StringType, IntegerType# 初始化 SparkSession 对象 s…...

2024 数学建模高教社杯 国赛(A题)| “板凳龙”舞龙队 | 建模秘籍文章代码思路大全

铛铛!小秘籍来咯! 小秘籍团队独辟蹊径,运用等距螺线,多目标规划等强大工具,构建了这一题的详细解答哦! 为大家量身打造创新解决方案。小秘籍团队,始终引领着建模问题求解的风潮。 抓紧小秘籍&am…...

kaggle注册收不到验证码、插件如何下载安装

综合这三个来看, 1.插件下载用的大佬给的分享链接 2.下载好压缩包以后需要解压缩 Header Editor插件网盘下载安装教程 - 哔哩哔哩 (bilibili.com) 3.安装插件时没找到crx文件,在浏览器插件界面点击“加载解压缩的扩展” 4.复制网址到插件里&#xff…...

k8s相关技术栈

文章目录 一、k8s技术栈核心组件常见工具和服务生态系统 二、k8s服务组件控制平面组件节点组件附加组件和服务 三、k8s 常见资源核心资源扩展资源 四、系列文档其他参考 一、k8s技术栈 Kubernetes(常被简称为 K8s,其中 “K” 代表 “Kubernetes” 的首字…...

uniapp h5项目页面中使用了iframe导致浏览器返回按键无法使用, 返回不了上一页.

uniapp h5项目页面中使用了iframe导致浏览器返回按键无法使用, 返回不了上一页. 在 UniApp 中使用 iframe 加载外部页面时,可能会遇到返回键行为不符合预期的问题。这是因为 iframe 本身可以包含多个页面的历史记录,而默认情况下,浏览器的返…...

《2024网络安全十大创新方向》

网络安全是创新驱动型产业,技术创新可以有效应对新的网络安全挑战;或是通过技术创新降低人力成本投入,提升企业运营效率。为推动行业技术创新、产品创新与应用创新,数说安全发布《2024年中国网络安全十大创新方向》,涵…...

深入解析反射型 XSS 与存储型 XSS:原理、危害与防范

在网络安全领域,跨站脚本攻击(XSS)是一种常见的安全漏洞。XSS 攻击可以分为反射型 XSS 和存储型 XSS 两种类型。本文将详细介绍这两种类型的 XSS 攻击的原理、危害和防范措施。 一、反射型 XSS 1、原理 反射型 XSS 攻击也称为非持久性 XSS …...

【STM32+HAL库】---- 驱动MAX30102心率血氧传感器

硬件开发板:STM32F407VET6 软件平台:cubemaxkeilVScode1 MAX30102心率血氧传感器工作原理 MAX30102传感器是一种集成了红外光源、光电检测器和信号处理电路的高度集成传感器,主要用于心率和血氧饱和度的测量。以下是MAX30102传感器的主要特点…...

InstantX团队新作!基于端到端训练的风格转换模型CSGO

由InstantX团队、南京理工大学、北京航空航天大学以及北京大学联合提出了一种基于端到端训练的风格转换模型 CSGO,它采用独立的特征注入明确地解耦内容和风格特征。统一的 CSGO 实现了图像驱动的风格转换、文本驱动的风格化合成和文本编辑驱动的风格化合成。大量实验…...

Nginx安全性配置

文章目录 引言I Nginx简单的安全性配置禁止特定的HTTP方法限制URL长度禁止某些用户代理限制请求速率连接限制禁止访问某些文件类型II 常见的安全规则防御CC攻击User-Agent过滤GET-URL过滤GET-参数过滤POST过滤(sql注入、xss攻击 )引言 Nginx本身并不具备复杂的防火墙规则定制…...

k8s单master多node环境搭建-k8s版本低于1.24,容器运行时为docker

k8s 1.20.6单master多node环境搭建 1.环境规划2.初始化服务器1)配置主机名2)设置IP为静态IP3)关闭selinux4)配置主机hosts文件5)配置三台主机之间免密登录6)关闭交换分区swap,提升性能7&#xf…...

taro ui 小程序at-calendar日历组件自定义样式+选择范围日历崩溃处理

taro ui 日历文档 目录 单选标记时间: 效果: template: data: methods: 日历--范围选择: 效果: template: data: methods: 日历--间隔多选:利用标…...

ARM发布新一代高性能处理器N3

简介 就在2月21日,ARM发布了新一代面向服务器的高性能处理器N3和V3,N系列平衡性能和功耗,而V系列则注重更高的性能。此次发布的N3,单个die最高32核(并加入到CCS,Compute Subsystems,包含Core&a…...

基于Pytorch框架的深度学习U2Net网络天空语义精细分割系统源码

第一步:准备数据 头发分割数据,总共有10276张图片,里面的像素值为0和1,所以看起来全部是黑的,不影响使用 第二步:搭建模型 级联模式 通常多个类似U-Net按顺序堆叠,以建立级联模型&#xff0c…...

50ETF期权和股指期权有什么区别?ETF期权应该怎么做?

今天期权懂带你了解50ETF期权和股指期权有什么区别?ETF期权应该怎么做?ETF是对个股期权,股指期权是对应该股指期货的,那么股指期权和etf期权有什么区别? 股指期权怎么交易 股指期权交易要开通股指期货账户&#xff0…...

JS设计模式之“神奇的魔术师” - 简单工厂模式

引言 在JavaScript开发中,我们经常需要创建和管理各种对象,而简单工厂模式就是一种最简单的用来创建对象的设计模式。 简单工厂模式通过一个工厂类来创建相似的对象,而无需直接使用具体类来实例化对象。这样可以将对象的创建过程与使用过程…...

【河北航空-注册安全分析报告-无验证方式导致安全隐患】

前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 1. 暴力破解密码,造成用户信息泄露 2. 短信盗刷的安全问题,影响业务及导致用户投诉 3. 带来经济损失,尤其是后付费客户,风险巨大,造…...

亚信安慧AntDB-T数据库内核之MVCC机制

本文主要介绍AntDB数据库内核中的一个很重要的机制——MVCC机制。 MVCC简介 MVCC(多版本并发控制)是AntDB数据库中实现事务隔离级别的一种机制。它允许多个事务同时对数据进行读写和修改操作,而不会相互干扰。在MVCC中,每个数据…...

【2026年阿里巴巴集团暑期实习- 4月8日-工程岗-第三题- 相邻等值对贡献和】(题目+思路+JavaC++Python解析+在线测试)

题目内容 给定一个长度为 $ n $ 的数组 $ {a_1, a_2, \dots, a_n} $。我们称一对下标 $ (i, j) $ 为相邻等值对,当且仅当 $ 1 \leq i < j \leq n ,,, a_i = a_j $,并且对于任意 $ k < i < j $,都有 $ a_k \neq a_i $。 对每一个相邻等值对 $ (i, j) $,定义其…...

终极Python开发指南:Anaconda如何将Sublime Text 3变身高性能IDE

终极Python开发指南&#xff1a;Anaconda如何将Sublime Text 3变身高性能IDE 【免费下载链接】anaconda Anaconda turns your Sublime Text 3 in a full featured Python development IDE including autocompletion, code linting, IDE features, autopep8 formating, McCabe c…...

Blackbird身份验证终极指南:API密钥安全管理与配置技巧

Blackbird身份验证终极指南&#xff1a;API密钥安全管理与配置技巧 【免费下载链接】blackbird An OSINT tool to search for accounts by username and email in social networks. 项目地址: https://gitcode.com/GitHub_Trending/bl/blackbird Blackbird是一款强大的开…...

3种方法实现Figma设计到JSON数据的无缝转换:从痛点到价值的完整指南

3种方法实现Figma设计到JSON数据的无缝转换&#xff1a;从痛点到价值的完整指南 【免费下载链接】figma-to-json 项目地址: https://gitcode.com/gh_mirrors/fi/figma-to-json Figma-to-json是一个开源工具集&#xff0c;专注于实现Figma设计文件与JSON格式的双向转换&…...

Shell流程控制(if-else、循环,实现复杂逻辑)

在Linux/Unix系统中&#xff0c;Shell脚本是自动化运维、批量处理任务的核心工具&#xff0c;而流程控制则是让脚本“摆脱线性执行”、实现灵活逻辑的关键。无论是简单的条件判断&#xff08;如“文件是否存在”&#xff09;&#xff0c;还是复杂的批量操作&#xff08;如“遍历…...

G-Helper:华硕笔记本的轻量级控制中心,5分钟告别臃肿官方软件

G-Helper&#xff1a;华硕笔记本的轻量级控制中心&#xff0c;5分钟告别臃肿官方软件 【免费下载链接】g-helper Lightweight, open-source control tool for ASUS laptops and ROG Ally. Manage performance modes, fans, GPU, battery, and RGB lighting across Zephyrus, Fl…...

行式存储(Row-based Storage)和列式存储(Column-base Storage)简介饲

1. 哑铃图是什么&#xff1f; 哑铃图&#xff08;Dumbbell Plot&#xff09;&#xff0c;有时也称为DNA图或杠铃图&#xff0c;是一种用于比较两个相关数据点的可视化图表。 它源于人们对更有效数据比较方式的持续探索。 在传统的时间序列比较中&#xff0c;我们通常使用两条折…...

告别暴力穷举!用ip33在线工具手工反算1~4字节CRC32校验码的原始数据

告别暴力穷举&#xff01;手工反算1~4字节CRC32校验码的数学艺术 在数据校验的世界里&#xff0c;CRC32就像一位沉默的守门人&#xff0c;它用32位的校验码守护着数据的完整性。但鲜为人知的是&#xff0c;当面对1-4字节的短数据时&#xff0c;这位守门人的规则可以被优雅地逆…...

第15章 Mosquitto生产环境部署实践

第15章 生产环境部署实践 15.1 部署架构 #mermaid-svg-vIDt7FlC1G9XhLIS{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}…...

d2s-editor:实现游戏存档可视化管理的开源工具解决方案

d2s-editor&#xff1a;实现游戏存档可视化管理的开源工具解决方案 【免费下载链接】d2s-editor 项目地址: https://gitcode.com/gh_mirrors/d2/d2s-editor d2s-editor是一款基于Vue.js开发的开源工具&#xff0c;专为游戏存档文件提供可视化编辑功能。作为一款轻量级W…...