加入收藏 | 设为首页 | 会员中心 | 我要投稿 汽车网 (https://www.0577qiche.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

Shell 数组概述

发布时间:2023-06-08 13:50:59 所属栏目:教程 来源:
导读:顾名思义,数组就是一系列数据的集合,这个数据就是我们之前学习的存储单个元素的最小单元变量,也就是说将一些列的元素整合到一个集合内,这个集合的名称就叫数组。当然与其他语言一样,数组具备几个条件,在 Shell
顾名思义,数组就是一系列数据的集合,这个数据就是我们之前学习的存储单个元素的最小单元变量,也就是说将一些列的元素整合到一个集合内,这个集合的名称就叫数组。当然与其他语言一样,数组具备几个条件,在 Shell 中数组仅支持一维数组,数组元素的下标从 0 开始,数组元素没有最大限制等。

为什么要用数组
与变量类似,当我们操作批量数据的时候,一个一个变量操作非常不便,此时我们可以使用一个数组集合,对整个数组集合进行遍历或其他操作,最终实现批量的效果,数组使得我们的脚本更具扩展性。

变量与数组的差异
变量是存储单个数据的单元,其在内存中是随机存储的,数组是存储一系列数据的集合,是事先在内存中开辟连续的一系列空间,之后将数组元素有序的存储在其中。

数组的基本使用
数组的定义
数组的定义有两种方式,可分为直接定义和单元素定义。

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

例如:

ARG1=(1 2 3 hello Shell)
ARG1 为数组名称,其值前三个为数字,最后一个为字符串。

单元素定义
Shell 中数组下标从 0 开始,利用单个元素来定义数组。

例如:

[root@master scripts]# ARG2[0]=1[root@master scripts]# ARG2[1]=2[root@master scripts]# ARG2[2]=3[root@master scripts]# ARG2[3]=hello Shell

元素获取
获取单个元素
与变量的引用一样,数组可以获取单个位置的元素,利用 ${ARG[num]}。

例如:

[root@master scripts]# echo ${ARG1[0]}            //获取AEG1数组中第一个元素[root@master scripts]# echo ${ARG1[3]}            //获取AEG1数组中第四个元素hello Shell

获取全部元素
获取数组值

获取数组全部元素使用 ${ARG[*]} 或 ${ARG[@]}。

例如:

[root@master scripts]# echo ${ARG1[@]}
   hello Shell[root@master scripts]# echo ${ARG1[*]}
   hello Shell
获取数组下标

获取数组全部下标使用 ${!ARG[*]} 或 ${!ARG[@]}。

例如:

[root@master ~]# echo ${!ARG1[@]}
   [root@master ~]# echo ${!ARG1[*]}

获取数组长度
获取整个数组长度

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

例如:

[root@master scripts]# echo ${#ARG1[*]}[root@master scripts]# echo ${#ARG1[@]}
获取单个元素的长度

对于数组中的某个元我们也可以进行长度的获取,可以利用 ${#ARG1[num]}。

例如:

[root@master scripts]# echo ${ARG1[@]} 
   hello Shell 
[root@master scripts]# echo ${ARG1[3]}        //获取第四个元素内容为:hello Shellhello Shell[root@master scripts]# echo ${#ARG1[3]}        //获取四个元素长度为11

数组元素的修改
数组可以进行一些列对其元素的操作。

修改

对数组元素的修改,直接对单个元素修改即可,例如:

[root@master scripts]# AEG1[0]=100[root@master scripts]# echo ${ARG1[@]}
   hello Shell
增加

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

[root@master scripts]# ARG1[10]=10[root@master scripts]# echo ${ARG1[@]}
   hello Shell 
[root@master scripts]# echo ${#ARG1[@]}
Tips:在此我们发现元素之前有 4 个元素,我们将下标 10 的元素赋值为 10,数组是按照从前往后顺序赋值的。

删除

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

[root@master scripts]# echo ${ARG1[@]} 
  hello Shell 
[root@master scripts]# unset ARG1[0]            //删除下标为0的元素[root@master scripts]# echo ${ARG1[@]}
 hello Shell 
[root@master scripts]# unset ARG1             //删除整个数组元素[root@master scripts]# echo ${ARG1[@]}

数组的切片

和其他语言一样,可以对数组进行切片也称截取操作。可以通过 ${AEG1[@或*]:起始位置:长度} 对原数组进行切片,返回的为字符串,例如:

[root@master scripts]# echo ${ARG1[@]}
   hello Shell[root@master scripts]# echo ${ARG1[@]:0:2}                //从第1个元素往后2个元素进行切片

数组的替换

可以替换数组中的某一个元素,例如我们将 ARG1 数组中的第 1 个元素替换为 110。

[root@master scripts]# echo ${ARG1[@]}
   hello Shell[root@master scripts]# echo ${ARG1[@]/1/110}
   hello Shell

(编辑:汽车网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章