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

【shell】shell 数组处理

Shell 数组 | https://www.runoob.com/linux/linux-shell-array.html

极简

array_name=(value1 value2 ... valuen)

array_name[0]=value0

读取数组元素值:${array_name[index]}

获取所有元素:echo "数组的元素为: ${my_array[*]}"

获取元素个数:echo "元素个数为: ${#my_array[*]}"

key-value

declare -A  array_name

array_name["google"]="www.google.com"

array_name["index"]

获取数组的所有键:echo "键为: ${!site[*]}"

简述

Bash Shell 只支持一维数组(不支持多维数组)

Shell 数组用括号来表示,元素用"空格"符号分割开,语法格式如下:
array_name=(value1 value2 ... valuen)

也可以使用数字下标来定义数组:
array_name[0]=value0
array_name[1]=value1
array_name[2]=value2

读取数组元素值的一般格式是:
${array_name[index]}

关联数组

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

关联数组的键是唯一的。

以下实例我们创建一个关联数组 site,并创建不同的键值:

实例
declare -A site=(["google"]="www.google.com" ["runoob"]="www.runoob.com" ["taobao"]="www.taobao.com")
我们也可以先声明一个关联数组,然后再设置键和值:

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

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

array_name["index"]

获取数组中的所有元素
使用 @ 或 * 可以获取数组中的所有元素
echo "数组的元素为: ${my_array[*]}"
echo "数组的元素为: ${my_array[@]}"

获取数组长度的方法与获取字符串长度的方法相同
echo "数组的元素个数为: ${#my_array[*]}"
echo "数组的元素个数为: ${#my_array[@]}"

获取数组的所有键
echo "数组的键为: ${!site[*]}"
echo "数组的键为: ${!site[@]}"

遍历
cnt=${#my_array[@]}
for ((i=0;i < ${cnt};i++))
do
echo ${array_name[i]}
done
 

空数组

vim ./test.sh 

#!/bin/bash
#
arry2=(That sa non empty array)
array3=()
array4=('')
#
ARRAY()
{
echo "Element of arry2 is:${array2[@]}."
echo "Element of array3 is:${array3[@]}."
echo "Element of array4 is:${array4[@]}."
}

ARRAY

array3[0]="my"
array3[2]="u"

ARRAY

array4[5]=9
echo "len of array3 is:${#array3[@]}."
echo "Element of array4 is:${array4[@]}."
echo "len of array4 is:${#array4[@]}."

[root@localhost vmshare]# ./test.sh 


Element of arry2 is:.
Element of array3 is:.
Element of array4 is:.
Element of arry2 is:.
Element of array3 is:my u.
Element of array4 is:.
len of array3 is:2.
Element of array4 is: 9.
len of array4 is:2.
 

相关文章:

  • 宿舍台灯什么光对眼睛好?推荐适合学生宿舍用的台灯
  • .stream().map与.stream().flatMap的使用
  • 【JVM】10 道不得不会的 JVM 面试题
  • Hadoop系列——大数据概念day1-1
  • ✨Linux定时备份mysql中的数据库(包括Docker)
  • 文件操作安全之-文件上传原理篇
  • 这就是为什么美联储加息 0.75% 可能对比特币有利的原因
  • 冒泡排序算法-python实现
  • 嵌入式分享合集61
  • MySQL进阶语句
  • MySQL:备份与恢复
  • Spring MVC
  • MySQL 日志管理
  • 机器学习之特征选择
  • 高薪程序员面试题精讲系列149之你熟悉单点登录吗?说说单点登录的实现原理及流程
  • 【译】React性能工程(下) -- 深入研究React性能调试
  • CSS 提示工具(Tooltip)
  • css选择器
  • JS基础之数据类型、对象、原型、原型链、继承
  • React-flux杂记
  • 初识 beanstalkd
  • 动态魔术使用DBMS_SQL
  • 给第三方使用接口的 URL 签名实现
  • 缓存与缓冲
  • 聊聊hikari连接池的leakDetectionThreshold
  • 你不可错过的前端面试题(一)
  • 深入浅出Node.js
  • 3月7日云栖精选夜读 | RSA 2019安全大会:企业资产管理成行业新风向标,云上安全占绝对优势 ...
  • ​软考-高级-系统架构设计师教程(清华第2版)【第9章 软件可靠性基础知识(P320~344)-思维导图】​
  • # Swust 12th acm 邀请赛# [ A ] A+B problem [题解]
  • #etcd#安装时出错
  • #考研#计算机文化知识1(局域网及网络互联)
  • (3)选择元素——(17)练习(Exercises)
  • (八)光盘的挂载与解挂、挂载CentOS镜像、rpm安装软件详细学习笔记
  • (动态规划)5. 最长回文子串 java解决
  • (接口封装)
  • (转)c++ std::pair 与 std::make
  • **Java有哪些悲观锁的实现_乐观锁、悲观锁、Redis分布式锁和Zookeeper分布式锁的实现以及流程原理...
  • .net 4.0发布后不能正常显示图片问题
  • .net 重复调用webservice_Java RMI 远程调用详解,优劣势说明
  • .net快速开发框架源码分享
  • .Net转Java自学之路—SpringMVC框架篇六(异常处理)
  • /etc/X11/xorg.conf 文件被误改后进不了图形化界面
  • [ MSF使用实例 ] 利用永恒之蓝(MS17-010)漏洞导致windows靶机蓝屏并获取靶机权限
  • [ 网络基础篇 ] MAP 迈普交换机常用命令详解
  • [2021]Zookeeper getAcl命令未授权访问漏洞概述与解决
  • [ACTF2020 新生赛]Upload 1
  • [AX]AX2012 AIF(四):文档服务应用实例
  • [BUUCTF 2018]Online Tool
  • [C++]类和对象(中)
  • [C++]类和对象【上篇】
  • [C++]模板与STL简介
  • [Java、Android面试]_05_内存泄漏和内存溢出
  • [JS7] 显示从0到99的100个数字
  • [leetcode] 103. 二叉树的锯齿形层次遍历