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_ARRAY[num]}==.

直接在终端上操作,在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_ARRAY[num]} ==。

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_ARRAY[num] 可以删除对应下标的数组元素,如果不带下标则删除数组的全部元素,例如:

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

🍊

相关推荐
0思必得010 分钟前
[Web自动化] 开发者工具性能(Performance)面板
运维·前端·自动化·web自动化·开发者工具
weixin_3870021511 分钟前
二次开发的openssl在windows平台的编译
linux·windows·安全·ssl
视觉装置在笑71323 分钟前
grep 命令基础用法
linux·运维
Lay_鑫辰24 分钟前
西门子1200PLC控制禾川X5ER伺服配置AC4模式全流程
运维·人工智能·单片机·嵌入式硬件·自动化
HalvmånEver25 分钟前
Linux:进程等待(进程控制三)
linux·运维·服务器
The star"'29 分钟前
docker swarm和containerd
运维·docker·容器
云飞云共享云桌面30 分钟前
研发部门使用SolidWorks,三维设计云桌面应该怎么选?
运维·服务器·前端·网络·自动化·电脑
干啥都是小小白33 分钟前
Linux 驱动
linux·运维·服务器
向山行_wolf37 分钟前
ubuntu20.04安装向日葵
linux·运维·服务器
❀͜͡傀儡师41 分钟前
Docker部署OneTerm堡垒机
运维·docker·容器·oneterm