Shell数组 实验

数组:数字组成的组,组里可以是int类型,string字符串

数组当中的数据类型可以由用户自定义,既可以是同一种,也可以是不同的数据类型组成的元素集合。数组最大的作用:可以一次性定义多个变量

在shell中创建数组的方法有以下三种:

直接添加数组:

通过数组的下标索引进行添加数组:

 

通过数组的索引一个个添加数组: 

直接定义一个元素将

删除整个数组为:unset 数组名
删除单个指定的元素:unset gsn[1]

数组的切片

格式:
${数组名[@或*]}:起始位置(起始索引):长度
分号第一个数字代表:索引位置从哪开始
分号第二个数字代表:从该位置起到第几都将切出来
如:

[root@localhost opt]# echo ${gsn[*]:1:3}
2 3 4
[root@localhost opt]# echo ${gsn[*]:0:3}
1 2 3

数组的替换

将数组中某几个元素替换的操作,可分为临时替换、永久替换

临时替换:

格式:echo ${gsn[*]/4/66}

将数组中第四个位置的索引替换为“66”

永久替换:

格式:gsn=($gsn[*]/4/66)

永久替换数组中的元素,需要重新定义数组才能永久修改

追加数组元素

在原有数组的基础上再添加元素,方法有以下三种:

gsn[5]=12

根据索引下标进行追加,如当前索引下有元素则是替换,没有则是追加

gsn [ $ { # gsn[ * ] } ]=6

常用的一种方式

gsn+=(8 9)    echo ${ gsn[ * ] }

更加直观的方式,直接在末尾追加元素,无需根据索引下标

数组的应用

数组一般与函数相结合使用,数组中的数据作为参数,传参给函数进行运算

#函数调用数组传参数


ky30 () {
  abc=($(echo $@ ))
echo "数组值为:${abc[*]}"
}
abc1=(`seq 1 10`)  #seq自动生成排序
ky30 ${abc1[*]}

冒泡排序

冒泡排序原理,将数组中的元素由从大到小或从小到大的顺序进行排序,运算顺序是每两个元素进行比较大小,小的向前移大的向后移;依次进行下去,直到排序完成。

冒泡排序需要运用双重for循环来实现,外层的大循环控制整个循环的次数,里面的小循环控制元素大小进行排序,下面将实现从小到大排序的命令过程。
 

[root@localhost opt]# vim maopao.sh
 
abc=(20 10 60 40 50 30) 
  echo "原数组的排列顺序为:${abc[*]}"
  length=${#abc[*]}           #定义数组的长度
for ((i=1;i<$length;i++))     #总共比5次
do
  for ((k=0;k<$length-i;k++))
  do 
	first=${abc[$k]}          #定义第一个元素的值  
	 j=$(($k+1))              #定义第二个元素的索引号
	second=${abc[$j]}         #定义第二个元素的值
     if [ $first -gt $second ]
       then
         temp=$first          #把第一个元素的值,保存在临时变量temp中
         abc[$k]=$second      #把小的值往前放
         abc[$j]=$first       #把大的值往后放
     fi
  done
done
  echo "排序后的数组排序为:$"

实验

一、将挂载点中第五列的数字从大到小倒序排列出来

猜你喜欢

转载自blog.csdn.net/ZWH9991/article/details/132270587