shell脚本中的数组排序

Posted 沉入深海

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell脚本中的数组排序相关的知识,希望对你有一定的参考价值。

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 $i

done

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]=7777
echo $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]=77
arr[7]=88
echo $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脚本——数组的应用及排序算法(冒泡直接反转希尔排序)

Shell脚本------数组

shell脚本——sortuniqtr数组排序cuteval命令配置

shell脚本中冒泡排序直接排序反转排序

在 shell 脚本中排序

shell脚本编程之冒泡排序脚本实现(解释非常详细,涉及正则表达式)