shell脚本中的数组排序
发布日期:2021-05-08 20:55:04 浏览次数:22 分类:精选文章

本文共 1817 字,大约阅读时间需要 6 分钟。

shell脚本中的数组排序

一、数组

把数字或者字符串有序或者无序的放在一个集合中的叫数组

1.数组的定义方法:

方法一:

数组名=(value0 value1 value2 ...)

在这里插入图片描述

方法二:

数组名=([0]=value [1]=value [2]=value [3]=value ...)

在这里插入图片描述

方法三`

列表名="value0 value1value2 ...."数组名=($列表名)

在这里插入图片描述

方法四:

数组名[0]="value"数组名[1]="value" 数组名[2]="value"

在这里插入图片描述

echo ${   数组名[*]}           #用来查看数组

2.数组包括的数据类型

数值类型 和 字符串类型

字符串类型需使用" "或者’ '定义

3.获取数组长度

*和@的方法a=("hello" "你好" "啊啊" "啊啊啊啊啊")a_1=${   #a[*]}echo "$a_1"

在这里插入图片描述

在这里插入图片描述

4.读取某具体下标赋值

arr_index2=${   arr_number[2]}echo $arr_index2

在这里插入图片描述

5.数组遍历

#!/bin/bash#数组的遍历arr=(1 2 1 4 5)echo "原先的数组为:${arr[@]}"for i in ${   arr[@]}do   echo $idone

在这里插入图片描述

6.数组切片

截取数组中部分数据

arry=(10 20 30 40 50 )echo ${   arry[*]}           echo ${   arry[@]}       #输出整个数组,此处*与@相同echo ${   arry[@]:1:3}   #获取 ${   数组名[@或*]:起始位置:长度} 的值echo ${   arry[@]:3:1}echo ${   arry[@]:3:5}

在这里插入图片描述

7.数组替换与删除

(1)单独替换:

1.通过数组的索引号,来替换数组中相对应具体的某一个

arry=(10 20 30 40 50)echo ${   arry[@]}arry[0]=7777echo ${   arry[@]}

在这里插入图片描述

(2)数组中所有对应的条件进行替换

echo ${   arry[*]/77/88}    #临时替换echo ${   arry[*]}         #此时数组原来的值不变

在这里插入图片描述

若想永久发生变化,则需要重新对arry 进行赋值,才行

 

在这里插入图片描述

在这里插入图片描述

(3) 删除数组

unset arry     #删除arry数组

在这里插入图片描述

这里已经永久替换数组内容了

(4) 删除数组中具体索引对应的值

arr=(1 2 3 4 5 )echo ${   arr[*]}unset arr[0]           #删除数组中选择索引对应的元素echo ${   arr[*]}echo ${   arr[0]}

在这里插入图片描述

8.数组追加元素

(1)方法一:单个添加

arr=(10 20 30 40 50 60 )echo ${   arr[5]}arr[6]=77arr[7]=88echo ${   arr[*]}

![在这里插入图片描述](https://img-blog.csdnimg.cn/20210311230135875.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aH在这里插入图片描述

单个添加

(2)方法二:在不进行任何删减时,索引最大值,就是元素长度减一

因为数组是有0索引开始的,所以数组的长度比最大索引大1,因此我们可以在数组最后面进行添加。

在这里插入图片描述

(3) 方法三:直接获取源数组的全部元素再加上新要添加的元素,一并重新赋予该数组,重新刷新定义索引

即重新排列数组,并且重新赋值

在这里插入图片描述

(4)方法四:待添加元素必须用“()”包围起来,并且多个元素用空格分隔

arr+=(10 11 12 ...)       #直接在arr 原有数组的情况下 增加数值。

在这里插入图片描述

9.向函数中传数组参数

在这里插入图片描述

执行得错误结果如下。
在这里插入图片描述

因此需要

#!/bin/bash#数组函数传参test (){     echo "传入得数组为:$@"  newarr=`echo $@`  echo "新得为:${newarr[@]} "}arr=(1 2 21 3 4)echo "原有${arr[@]} "test ${arr[@]}

在这里插入图片描述

可见下图,数组传入函数成功。
在这里插入图片描述

上一篇:shell脚本中冒泡排序、直接排序、反转排序
下一篇:shell编程之免交互(EOF、Expect使用)

发表评论

最新留言

第一次来,支持一个
[***.219.124.196]2025年04月06日 15时58分03秒