Linux运维实例 shell脚本中数组的编写和应用 附双层for循环

文章目录

  • 前言
  • 一、数组定义的方法
    • 索引号
    • 定义赋值和声明数组
    • 获取数组列表
    • 数组的增删改查
  • 二、数组的遍历和传参
    • 1 遍历(for循环)
    • 2.向函数传递数组参数
    • 3 从函数返回数组
  • 三、数组排序的几种算法

前言

数组在shell脚本中可以定义一组数字来调用,是一种在shell脚本常见的数据结构

一、数组定义的方法

索引号

在一组数组里面 每个对应的数字都有对应的索引号,索引序号从0开始 如图所示

Linux运维实例 shell脚本中数组的编写和应用 附双层for循环_第1张图片

定义赋值和声明数组

使用declace 声明一个数组
在这里插入图片描述
定义数组 数组不一定是由数字组成 具体方法有四种

第一种较简单 数组名=数组的内容 不加上索引号
在这里插入图片描述
第二种和第一种相同 但是要加上索引号
在这里插入图片描述
第三种 先列出列表名 数组名
在这里插入图片描述
第四种 将数组名一一列出
在这里插入图片描述
第三种最为常用的

获取数组列表

用来获取数组里面的值和数组长度
常用的方法有@和*
在这里插入图片描述
可知该数组的长度为6
获取值可以结合数组的索引来获取
在这里插入图片描述
获取数组间数值的长度值 *和@均可以 称为切片
在这里插入图片描述

数组的增删改查

数组中的数值可以被替换 要改变原有数组,可重新赋值
在这里插入图片描述
数组中删除分为删除整个数组和单个元素
删除单个元素时元素用索引来表示单个元素 但是注意 删除的元素对应的索引不会删除。
在这里插入图片描述
删除整个数组
在这里插入图片描述
在数组中追加元素 方法有四种 这里只演示一种
在这里插入图片描述

二、数组的遍历和传参

1 遍历(for循环)

数组遍历就是通过脚本来循环一个数组
Linux运维实例 shell脚本中数组的编写和应用 附双层for循环_第2张图片
shell代码
Linux运维实例 shell脚本中数组的编写和应用 附双层for循环_第3张图片

2.向函数传递数组参数

在将数组变量作为函数参数,函数只会取数组变量的第一个值。 代码如下

Linux运维实例 shell脚本中数组的编写和应用 附双层for循环_第4张图片
Linux运维实例 shell脚本中数组的编写和应用 附双层for循环_第5张图片
如上面显示 只会取数组的第一个值
要解决这个问题 就需要将数组变量的值分解成单个值,然后将这些值作为函数参数使用。在函数内部,再将所有的参数重新组合成一个新的数组变量。
代码如下
Linux运维实例 shell脚本中数组的编写和应用 附双层for循环_第6张图片
结果如下
在这里插入图片描述

3 从函数返回数组

Linux运维实例 shell脚本中数组的编写和应用 附双层for循环_第7张图片

三、数组排序的几种算法

一般常用的排序算法为两种 冒泡排序和直接排序 反转排序
冒泡排序 故名思意 类似气泡上涌的动作,会将数据在数组中从小到大或者从大到小不断的向前移动
基本思路就是满足条件的元素位置互换。

Linux运维实例 shell脚本中数组的编写和应用 附双层for循环_第8张图片

在这里插入图片描述
直接排序在逻辑上比较好说,与冒泡排序相比,直接排序的交换次数更少,速度会快些 将指定的数字按条件的对比,满足条件就换位子,区别冒泡 不是相邻的换,不断排序时排序好的区域会不断增加,最后数组都会排好。
Linux运维实例 shell脚本中数组的编写和应用 附双层for循环_第9张图片
在这里插入图片描述
反转排序是以相反的顺序把原有的数组的内容重新排序,把数组的第一个元素和最后一个元素替换 一直循环把所有的数组元素反转替换。
Linux运维实例 shell脚本中数组的编写和应用 附双层for循环_第10张图片
在这里插入图片描述

你可能感兴趣的:(shell,shell)