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

🍊

相关推荐
云和数据.ChenGuang35 分钟前
关闭 GitLab 升级提示的详细方法
运维·自动化·gitlab·es运维
007php00743 分钟前
服务器上PHP环境安装与更新版本和扩展(安装PHP、Nginx、Redis、Swoole和OPcache)
运维·服务器·后端·nginx·golang·测试用例·php
冰橙子id4 小时前
linux-远程访问管理(sshd,scp,sftp)
linux·网络·ssh
光电的一只菜鸡5 小时前
ubuntu之坑(十五)——设备树
linux·数据库·ubuntu
saynaihe7 小时前
ubuntu 22.04 anaconda comfyui安装
linux·运维·服务器·ubuntu
企鹅与蟒蛇7 小时前
Ubuntu-25.04 Wayland桌面环境安装Anaconda3之后无法启动anaconda-navigator问题解决
linux·运维·python·ubuntu·anaconda
小蜜蜂爱编程7 小时前
ubuntu透网方案
运维·服务器·ubuntu
程序设计实验室8 小时前
小心误关了NAS服务器!修改Linux的电源键功能
linux·nas
AI视觉网奇8 小时前
git 访问 github
运维·开发语言·docker
liulilittle8 小时前
.NET ExpandoObject 技术原理解析
开发语言·网络·windows·c#·.net·net·动态编程