shell数组

文章目录


你的点赞评论就是对博主最大的鼓励
当然喜欢的小伙伴可以:点赞+关注+评论+收藏(一键四连)哦~


🍊自我介绍

  Hello,大家好,我是小珑也要变强(也是小珑),我是易编程·终身成长社群的一名**"创始团队·嘉宾"** 和**"内容共创官"** ,现在我来为大家介绍一下有关物联网-嵌入式方面的相关内容。


🍊shell数组概述

简介

根据我们学习C语言的经验,数组就是一系列数据的集合。这个数据就是我们之前学习的存储单个元素的最小单元变量,也就是说将一系列的元素整合到一个集合内,这个集合的名称就叫做数组。当然与其他语言一样,数组具备几个条件,在shell中数组仅仅支持一维数组,数组元素的下标从0开始,数组元素没有最大限制等。

使用数组的优势

在我们之前学习C语言的过程中,大家应该有所体会,当我们操作批量数据的时候,一个一个变量操作非常不便,此时我们可以使用一个数组的集合,对整个数组集合进行遍历或其他操作,最终实现批量的效果,数组使得我们的脚本更具扩展性。

🍊Shell数组使用方法

数组的定义

数组的定义有两种,可以分为直接定义和氮元素定义。

直接定义

数组类似于变量定义,只不过将里面的值用小括号括起来,其中每个元素使用空格分隔。shell数组中元素的类型可以不一样,例如其中可以包括数字和字符串。

示例:

直接在终端上操作

powershell 复制代码
SHELL_ARRAY=(1 2 3 "shell")

说明:

SHELL_ARRAY 为数组名

1,2,3为保存的数字,"shell" 为保存的字符串

单元素定义

shell 中数组下标从0开始,利用单个元素来定义数组。操作和C语言类似

示例:

直接在终端上操作

powershell 复制代码
SHELL_ARRAY[0]=1
SHELL_ARRAY[1]=2
SHELL_ARRAY[2]=3
SHELL_ARRAY[3]="shell"

元素的获取

获取单个元素

与变量的引用一样,数组可以获取单个位置的元素,利用==${SHELL_ARRAYnum}==.

直接在终端上操作,在SHELL_ARRAY已经定义好的基础上

示例用法:

powershell 复制代码
echo ${SHELL_ARRAY[0]}       //获取数组中第一个元素  
1
echo ${SHELL_ARRAY[3]}        //获取数组中第四个元素  
shell

获取全部元素

获取全部元素使用 {SHELL_ARRAY\[\*\]} 或者 {SHELL_ARRAY@}

示例用法:

powershell 复制代码
echo ${SHELL_ARRAY[*]}
1 2 3 shell
echo ${SHELL_ARRAY[@]}
1 2 3 shell

获取数组长度

获取整个数组长度

数组长度及数组中元素的个数,可以利用 {#SHELL_ARRAY\[\*\]}**或者 **{#SHELL_ARRAY@},我们发现其实就是在获取数组全部元素前添加 # 来获取数组的个数。

eg:

powershell 复制代码
echo ${#SHELL_ARRAY[*]} 
4
echo ${#SHELL_ARRAY[@]} 
4

获取单个元素的长度

对于shell数组中的单个元素我们也可以进行长度的获取,可以利用 ==${#SHELL_ARRAYnum} ==。

eg:

powershell 复制代码
echo ${#SHELL_ARRAY[3]} 
5
echo ${#SHELL_ARRAY[1]} 
1

操作数组

增加

对数组元素的增加,直接对单个位置元素增加即可,例如:

powershell 复制代码
SHELL_ARRAY[4]=10
echo ${SHELL_ARRAY[@]}  //1 2 3 shell 10

echo ${#SHELL_ARRAY[@]}  //5

删除

删除数组可以使用unset,unset SHELL_ARRAYnum 可以删除对应下标的数组元素,如果不带下标则删除数组的全部元素,例如:

powershell 复制代码
unset SHELL_ARRAY[0]  //删除下标为0的元素

unset SHELL_ARRAY  // 删除整个数组元素

关联数组

上述教大家使用的额都是我们的普通数组,Shell中还提供了一种关联性数组,在使用关联数组前,必须先使用 declare -A声明它。

eg:

powershell 复制代码
declare -A ARGFILE
ARGFILE=([name1]=Shell [name2]=linux [name3]=arg)  //关联数组元素赋值
echo ${ARGFILE[@]}   
arg linux Shell         //输出顺序和定义的顺序无关

echo ${!ARGFILE[@]}    //查看所有的key值
name3 name2 name1

🍊

相关推荐
周山至水数翠峰11 分钟前
Windows 事件与跨线程调用
windows
coward9126 分钟前
Linux内核驱动初始化流程认识(关于late_initcall和modul_init驱动初始化宏差异)
linux·嵌入式硬件
modelmd28 分钟前
Linux man 命令详解:从入门到精通
linux
techdashen38 分钟前
拆开任意 Electron 应用:从 Windows 安装包到 Discord 的私有更新协议
javascript·windows·electron
SWAGGY..43 分钟前
Linux系统编程:(十一)进程状态&&Linux中的僵尸状态
linux·服务器·编辑器·vim
洵有兮1 小时前
Shell 脚本编程学习总结(基础 + 变量 + 条件 + 流程控制 + 函数数组)
linux·学习
我命由我123451 小时前
SEO 与 GEO 极简理解
java·linux·运维·开发语言·学习·算法·运维开发
我材不敲代码1 小时前
Python基础:注释的写法(单行、多行、文档注释)
服务器·python·microsoft
楼兰公子1 小时前
RK3588 Linux驱动开发大纲
linux·驱动开发
红辣椒...1 小时前
codex+第三方模型
java·服务器·前端