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

shell 数组定义与使用

一维数组

数组定义

array_name=(value1 value2 ... value)

也可以使用数字下表来定义数组

array_name[0]=value0
array_name[1]=value1
array_name[2]=value2

读取数组

${array_name[index]}
实例1
[root@iZj6c3slqbp8xuu2w3i4roZ devops]# cat array_name.sh 
#!/usr/bin/bashmy_array=(A B "C" D)echo "第1个元素为: ${my_array[0]}"
echo "第2个元素为: ${my_array[1]}"
echo "第3个元素为: ${my_array[2]}"
echo "第4个元素为: ${my_array[3]}"

执行脚本输出如下所示:

[root@iZj6c3slqbp8xuu2w3i4roZ devops]# bash array_name.sh 
第1个元素为: A
第2个元素为: B
第3个元素为: C
第4个元素为: D

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

${array_name[*]}
${array_name[@]}

获取数组的长度

length=${#array_name[@]}
length=${#array_name[*]}

获取数组单个元素的长度

lengthn=${#array_name[index]}
实例2
[root@iZj6c3slqbp8xuu2w3i4roZ devops]# cat array_name.sh 
#!/usr/bin/bashmy_array=(A B "1234" D)echo "所有元素有: ${my_array[*]}"
echo "所有元素有: ${my_array[@]}"
echo "该数组长度: ${#my_array[@]}"
echo "该第3个元素长度为: ${#my_array[2]}"

执行脚本输出如下所示:

[root@iZj6c3slqbp8xuu2w3i4roZ devops]# bash array_name.sh 
所有元素有: A B 1234 D
所有元素有: A B 1234 D
该数组长度: 4
该第3个元素长度为: 4

关联数组

Bash 支持关联数组,可以使用任意的字符串、或者整数作为下标来访问数组元素。关联数组使用 declare 命令来声明,语法格式如下:

declare -A array_name

-A 选项就是用于声明一个关联数组。
关联数组的键是唯一的。
一下实例我们创建一个关联数组 site,并创建不用的键值:

实例3
declare -A site=(["google"]="www.google.com" ["runoob"]="www.runoob.com" ["taobao"]="www.taobao.com")

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

实例4
declare -A site
site["google"]="www.google.com"
site["runoob"]="www.runoob.com"
site["taobao"]="www.taobao.com"

访问关联数组元素可以使用指定的键,格式如下:

array_name["index"]
实例5

处理文本数据

cat node_info.txt 
p7-mzuofang-yxf-1       43.138.**.**
p7-mzuofang-yxf-2       1.**.52.6**[yingjian@VM-32-38-centos scripts]$ cat get_node_info.sh 
#!/usr/bin/bash
# Author: yingjian
# Date: 2023-5-5
# Version: v1.0node_yaml="node-info.yml"echo -n "" > $node_yaml#获取脚本目录
cd `dirname $0`
script_dir=`pwd`num=0while read line
doaccount=$lineaccounts[$num]=$account((num++))
#  echo $num
done < $script_dir/node_info.txt#echo ${accounts[@]}
len=${#accounts[@]}for((i=0;i<$len;i++))
dok=0var=${accounts[$i]}len_var=${#var[@]}for j in $vardovars[$k]=$j((k++))if [ "$k" -gt "$len_var" ];thencontinuefidoneecho "${vars[0]}"echo "${vars[1]}"echo "- targets: ['${vars[1]}:9100']" >> $node_yamlecho "  labels:" >> $node_yamlecho "   nodename: \"${vars[0]}\"" >> $node_yaml
done

本文参考链接:https://www.runoob.com/linux/linux-shell-array.html

相关文章:

shell 数组定义与使用

一维数组 数组定义 array_name(value1 value2 ... value)也可以使用数字下表来定义数组 array_name[0]value0 array_name[1]value1 array_name[2]value2读取数组 ${array_name[index]}实例1 [rootiZj6c3slqbp8xuu2w3i4roZ devops]# cat array_name.sh #!/usr/bin/bashmy_…...

24 KVM管理虚拟机-配置VNC-TLS登录

文章目录 24 KVM管理虚拟机-配置VNC-TLS登录24.1 概述24.2 操作步骤 24 KVM管理虚拟机-配置VNC-TLS登录 24.1 概述 VNC服务端和客户端默认采用明文方式进行数据传输&#xff0c;因此通信内容可能被第三方截获。为了提升安全性&#xff0c;openEuler支持VNC服务端配置TLS模式进…...

C++基础讲解第六期(多态、虚函数、虚析构函数、dynamic_cast、typeid纯虚函数)

C基础讲解第六期 代码中也有对应知识注释&#xff0c;别忘看&#xff0c;一起学习&#xff01; 一、多态1. 问题引出2. 多态的概念和使用3. 多态的原理4. 虚析构函数5. 动态类型识别(dynamic_cast)(1) 自定义类型(2). dynamic_cast(3). typeid 6. 纯虚函数 纯虚函数需要补充 一…...

防火墙之iptables(二)

防火墙之iptables&#xff08;二&#xff09; 一.SNAT原理与应用 1.应用环境 局域网主机共享单个公网IP地址接入Internet&#xff08;私网不能被Internet中正常路由&#xff09;2.SNAT原理 修改数据包的源地址内网访问外网 将从内网发送到外网的数据包的源IP由私网IP转换成…...

亚马逊销量暴跌该如何查找原因?

很多卖家经常遇到一个棘手的问题&#xff0c;就是突然会遇到链接销量暴跌的问题。 比如之前链接可以稳定出单10多单的&#xff0c;突然连续几天只有两三单&#xff0c;这到底是什么原因呢? 1.查看链接的类目是否被修改 这个类目修改不一定是卖家自己修改&#xff0c;更多的时…...

Vue中的脚手架和路由

私人博客 许小墨のBlog —— 菜鸡博客直通车 系列文章完整版&#xff0c;配图更多&#xff0c;CSDN博文图片需要手动上传&#xff0c;因此文章配图较少&#xff0c;看不懂的可以去菜鸡博客参考一下配图&#xff01; 系列文章目录 前端系列文章——传送门 后端系列文章——传送…...

Convolutional Neural network(卷积神经网络)

目录 Why CNN for Image&#xff1f; The whole CNN structure Convolution&#xff08;卷积&#xff09; Max Pooling Flatten CNN in Keras What does CNN learn&#xff1f; what does filter do what does neuron do what about output Deep Dream Application Pla…...

【资料分享】高边、低边晶体管开关及电路解析

高边和低边晶体管开关 电路中&#xff0c;晶体管常常被用来当做开关使用。晶体管用作开关时有两种不同的接线方式&#xff1a;高边&#xff08;high side&#xff09;和低边(low side)。 高边和低边是由晶体管在电路中的位置决定的。晶体管可以是双极性晶体管&#xff08;BJT…...

六级备考28天|CET-6|听力第二讲|长对话满分技巧|听写技巧|2022年6月考题|14:30~16:00

目录 1. 听力策略 2. 第一二讲笔记 3. 听力原文复现 (5)第五小题 (6)第六小题 (7)第七小题 (8)第八小题 扩展业务 expand business 4. 重点词汇 1. 听力策略 2. 第一二讲笔记 3. 听力原文复现 (5)第五小题 our guest is Molly Sundas, a university stud…...

计算机图形学 | 实验九:纹理贴图和天空盒

计算机图形学 | 实验九&#xff1a;纹理贴图和天空盒 计算机图形学 | 实验九&#xff1a;纹理贴图和天空盒实验概述顶点数据立方体顶点数据天空盒顶点数组 纹理载入创建纹理纹理读取纹理绑定 使用纹理立方体着色器顶点着色器片元着色器 天空盒着色器顶点着色器片元着色器 立方体…...

Unity A* Pathfinding Project

先下载免费版 https://arongranberg.com/astar/download# 教程首页 https://arongranberg.com/astar/docs/getstarted.html 创建一个plane 当地面 创建一个gameobject 添加组件 PathFinder 长这样 调整每个格子大小的 创建两个layer 一个是阻挡物的 一个是地面的 这里填入阻…...

SpringBoot ( 一 ) 搭建项目环境

1.搭建环境 1.1.创建项目向导 使用idea中的向导创建SpringBoot项目 1.1.1.建立新的项目 位置 : 菜单 > File > New > Project… 1.1.2.选择向导 默认的向导URL 是 https://start.spring.io 建议使用 https://start.aliyun.com 1.1.3.配置项目信息 Group : 组织…...

idea中关联Git

注意&#xff1a;未安装和配置Git软件&#xff0c;请先跳转到 Git宝典_没办法&#xff0c;我就是这么菜的博客-CSDN博客 idea关联git 关联git.exe 选择你的Version Control 下的Git 选择你的Git安装目录bin下的git.exe&#xff0c;点击ok 点击Test&#xff0c;显示版本号…...

Java面试知识点(全)-分布式微服务-zookeeper面试知识点

Java面试知识点(全) 导航&#xff1a; https://nanxiang.blog.csdn.net/article/details/130640392 注&#xff1a;随时更新 ZooKeeper是什么&#xff1f; ZooKeeper是一个分布式的&#xff0c;开放源码的分布式应用程序协调服务&#xff0c;是Google的Chubby一个开源的实现&…...

(IDEA)springCloud项目导入本地jar包方法和项目打包时找不到引入本地jar包的问题解决方案

idea导入本地jar包 方法一:点击左上角File–>Project Structure–>Modules。打开Modules界面点击下方号&#xff0c;选择第一项&#xff0c;找到想要导入的本地jar包。此方法可以使项目使用导入的jar包程序不报错&#xff0c;但是在打包项目时&#xff0c;会出现找不到程…...

非线性系统的线性化与泰勒级数

线性系统与非线性系统的区别 我们在读论文的时候经常会遇到这两个系统&#xff0c;线性系统与非线性系统&#xff0c;这两者之间有什么区别呢&#xff1f; 线性指量与量之间按比例、成直线的关系&#xff0c;在空间和时间上代表规则和光滑的运动&#xff1b;非线性则指不按比…...

HOOPS全新文档系统上线!三维模型文件转换更便捷!

HOOPS 2023 U1版本已经正式发布&#xff0c;伴随新版本上线的还有全新的文档系统&#xff0c;新的文档系统亮点包括&#xff1a; 改进了样式和布局&#xff0c;使导航更加简单快捷&#xff1b;修订了导航结构&#xff0c;提高了产品相关信息的清晰度&#xff1b;SDK API参考章…...

第三篇:强化学习发展历史

你好&#xff0c;我是zhenguo&#xff08;郭震&#xff09; 这是强化学习第三篇&#xff0c;我们回顾一下它的发展历史&#xff1a;强化学习发展历史 强化学习作为一门研究领域&#xff0c;经历了多年的发展和演进。以下是强化学习的主要发展历史里程碑&#xff1a; 1950年代-1…...

如何学会战略性思维?

上帝在创造一个成功人生时加入了什么配方&#xff1f;一部分努力、一点天赋、必备的人脉、再加入不可或缺的good luck......这都是成功人生的重要因素。 弗雷德佩拉德认为&#xff0c;不管人们在商业领域选择追求什么&#xff0c;要想成功&#xff0c;还需要增加一个名为“战略…...

设备采购信息管理系统

系列文章 任务14 设备采购信息管理系统 文章目录 系列文章一、实践目的与要求1、目的2、要求 二、课题任务三、总体设计1.存储结构及数据类型定义2.程序结构3.所实现的功能函数4、程序流程图 四、小组成员及分工五、 测试界面展示添加采购信息按编号查找采购信息按设备编号查找…...

Python数据分析环境部署:Anaconda与Phi-3-mini协作指南

Python数据分析环境部署&#xff1a;Anaconda与Phi-3-mini协作指南 1. 为什么选择这个组合&#xff1f; 在开始动手之前&#xff0c;我们先聊聊为什么Anaconda和Phi-3-mini是数据科学家的好搭档。Anaconda就像是一个瑞士军刀&#xff0c;把Python环境管理和包依赖这些麻烦事都…...

Fan Control风扇控制软件:从入门到精通的全方位指南

Fan Control风扇控制软件&#xff1a;从入门到精通的全方位指南 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trending/fa/F…...

微软VibeVoice-TTS-Web-UI:长文本语音合成效果展示

微软VibeVoice-TTS-Web-UI&#xff1a;长文本语音合成效果展示 1. 突破性的语音合成体验 1.1 从机械朗读到情感表达 传统语音合成技术往往停留在"文字转声音"的基础层面&#xff0c;生成的语音缺乏情感起伏和自然韵律。VibeVoice-TTS-Web-UI通过创新的语言理解和声…...

ISPS编程语言HLS设计

一、ISPS编程语言HLS设计 1.ISPS 并非现代主流编程语言 2.ISPS‌ 全称为 ‌Instruction Set Processor Specifications‌&#xff08;指令集处理器规范&#xff09;&#xff0c;是一种用于描述数字系统结构和行为的‌早期硬件描述语言‌ ‌ 3.ISPS 属于‌第二代硬件描述语言‌&…...

零代码基础入门:用星图AI训练PETRV2-BEV模型的详细教程

零代码基础入门&#xff1a;用星图AI训练PETRV2-BEV模型的详细教程 1. 前言&#xff1a;为什么选择PETRV2-BEV模型 在自动驾驶领域&#xff0c;BEV&#xff08;鸟瞰图&#xff09;感知技术正变得越来越重要。PETRV2作为最新一代基于Transformer的BEV感知模型&#xff0c;相比…...

OpenClaw+Phi-3-vision-128k-instruct:学术海报自动排版系统

OpenClawPhi-3-vision-128k-instruct&#xff1a;学术海报自动排版系统 1. 为什么需要学术海报自动化工具 作为一名经常参加学术会议的研究人员&#xff0c;我深刻体会到制作学术海报的痛苦。每次投稿被接收后&#xff0c;总要花上大半天时间折腾排版——调整图片位置、对齐文…...

深入浅出:图解5G NR中UCI复用与资源抢占的那些事儿

5G NR上行控制信道的资源博弈&#xff1a;UCI复用机制全景解析 想象一下&#xff0c;在一个繁忙的十字路口&#xff0c;各种车辆&#xff08;出租车、救护车、私家车&#xff09;都在争夺有限的通行权。5G上行控制信道中的UCI复用场景与之惊人地相似——SR&#xff08;调度请求…...

AudioSeal部署教程:HTTPS反向代理配置(Nginx)保护7860端口Web访问

AudioSeal部署教程&#xff1a;HTTPS反向代理配置&#xff08;Nginx&#xff09;保护7860端口Web访问 1. 项目概述 AudioSeal是Meta开源的专业语音水印系统&#xff0c;主要用于AI生成音频的检测和溯源。这个工具能够帮助用户&#xff1a; 在音频中嵌入不可见的水印信息从音…...

构建企业级 AI 工作流:基于 OpenClaw 接入纯血 Claude Opus 4.6 实战指南

构建企业级 AI 工作流&#xff1a;基于 OpenClaw 接入纯血 Claude Opus 4.6 实战指南 文章目录构建企业级 AI 工作流&#xff1a;基于 OpenClaw 接入纯血 Claude Opus 4.6 实战指南一、 为什么在生产环境死磕顶级大模型&#xff1f;二、 Claude Opus 4.6 核心能力与底层原理漫谈…...

HWA_04 LeetCode 150、逆波兰表达式求值

题目解题思路 class Solution:def evalRPN(self, tokens: List[str]) -> int:stack []for token in tokens:try:stack.append(int(token))except:num2stack.pop()num1stack.pop()stack.append(self.evluate(num1,num2,token))return stack[0]def evluate(self,num1,num2,op)…...