当前位置: 首页 > 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

http://www.lryc.cn/news/69733.html

相关文章:

  • 24 KVM管理虚拟机-配置VNC-TLS登录
  • C++基础讲解第六期(多态、虚函数、虚析构函数、dynamic_cast、typeid纯虚函数)
  • 防火墙之iptables(二)
  • 亚马逊销量暴跌该如何查找原因?
  • Vue中的脚手架和路由
  • Convolutional Neural network(卷积神经网络)
  • 【资料分享】高边、低边晶体管开关及电路解析
  • 六级备考28天|CET-6|听力第二讲|长对话满分技巧|听写技巧|2022年6月考题|14:30~16:00
  • 计算机图形学 | 实验九:纹理贴图和天空盒
  • Unity A* Pathfinding Project
  • SpringBoot ( 一 ) 搭建项目环境
  • idea中关联Git
  • Java面试知识点(全)-分布式微服务-zookeeper面试知识点
  • (IDEA)springCloud项目导入本地jar包方法和项目打包时找不到引入本地jar包的问题解决方案
  • 非线性系统的线性化与泰勒级数
  • HOOPS全新文档系统上线!三维模型文件转换更便捷!
  • 第三篇:强化学习发展历史
  • 如何学会战略性思维?
  • 设备采购信息管理系统
  • Puppeteer入门实践
  • 生成VLC 及其模块的全面帮助
  • 什么是客户自助服务门户及其搭建方法
  • 【5.19】三、白盒测试方法—逻辑覆盖法
  • Linux安装MySQL后无法通过IP地址访问处理方法
  • 使用Python实现Rest API指南
  • 【2023 · CANN训练营第一季】进阶班 应用开发深入讲解→模型推理
  • 单词分析问题
  • 3个月出国|材料科学老师自费赴韩国访学
  • MaaS来临,SaaS进入「奇点」时刻|产业深度
  • 课程分享:华清远见联合NXP推出i.MX8M Plus开发与实践课程,超干超实用!