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

🍊

相关推荐
BillKu19 分钟前
Linux(CentOS)安装达梦数据库 dm8
linux·服务器·centos·达梦数据库·dm8
liu_sir_20 分钟前
IPTV智慧云桌面,后台服务器搭建笔记
运维·服务器·笔记
Grits22 分钟前
VMware Tools工具安装脚本(CentOS & Ubuntu)
linux·ubuntu·centos
aFakeProgramer1 小时前
QEMU 模拟器中运行的 Linux 系统
linux·运维·服务器
学Linux的语莫1 小时前
一、Nginx反向代理(七层代理)二、Nginx的TCP/UDP调度器(四层代理)
linux·运维·服务器·tcp/ip·nginx·udp·云计算
WIN赢2 小时前
【LINUX相关】
linux·运维·服务器
vbsecvey2 小时前
linux病毒编写+vim shell编程
linux·安全·网络安全
命里有定数2 小时前
Ubuntu问题 -- 允许ssh使用root用户登陆
linux·ubuntu·ssh
L_cl2 小时前
Python学习从0到1 day28 Python 高阶技巧 ⑥ Socket服务端开发
运维·服务器·学习