Shell编程之数组

目录

一、数组的基本概念

二、定义数组的方法

方法一:

方法二:

方法三:

方法四:

三、 数组的输出,删除和长度统计

1)数组元素的输出

2)数组全部元素输出

3)任意字符起输出任意个数数组元素 (数组切片)

4)条件判断输出方式

5)数组的删除

①删除单个数组元素

​②删除整个数组

6)数组长度统计及其其他作用

①统计数组长度的方法

②用元素个数的方法来检测数组中是否存在空值  

四、数组的遍历和替换 

1)数组的遍历

2)数组中元素的替换

①数组的临时替换

②永久替换数组内容

五、数组追加元素

1)方式一:指定位置添加

2)方式二: 末尾追加元素

3)方式三:进行末尾多元素追加

4)方法四:直接末尾追加多元素且格式最为简单 

六、数组在函数的传参


一、数组的基本概念

数组(Array)是有序的元素序列

  • 若将有限个类型相同的变量的集合命名,那么这个名称为数组名。
  • 组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。
  • 用于区分数组的各个元素的数字编号称为下标
  • 数组是在编程中,为了处理方便, 把具有相同类型的若干元素按有序的形式组织起来的一种形式

这些有序排列的同类数据元素的集合称为数组

二、定义数组的方

方法一:

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

以空格间隔,如果值为字符类型,需要加单引号或双引号
[root@localhost shuzhu]# array1=(10 20 30 40 50)
[root@localhost shuzhu]# echo ${array1[@]}
10 20 30 40 50
[root@localhost shuzhu]# echo ${array1}
10

方法二:

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

以空格间隔,“ [ ] ”里表示元素的下标,第一个元素从0开始
[root@localhost shuzhu]# array2=([0]=11 [1]=22 [3]=33 [4]=44)
[root@localhost shuzhu]# echo ${array2[*]}
11 22 33 44

方法三:

列表名="value0 value1 value2 ..."

数组名=($列表名)
[root@localhost shuzhu]# i="a b c d e f g"
[root@localhost shuzhu]# array3=($i)
[root@localhost shuzhu]# echo ${array3[*]}
a b c d e f g

方法四:

数组名 [0]="value"

数组名 [1]="value"

数组名 [2]="value"
[root@localhost shuzhu]# array4[0]=one
[root@localhost shuzhu]# array4[1]=two
[root@localhost shuzhu]# array4[2]=three
[root@localhost shuzhu]# array4[3]=four
[root@localhost shuzhu]# array4[4]=five
[root@localhost shuzhu]# echo ${array4[*]}
one two three four five

三、 数组的输出,删除和长度统计

1)数组元素的输出

格式:echo ${数组名[下标]} 
[root@localhost shuzhu]# echo ${array1[0]}
10
[root@localhost shuzhu]# echo ${array1[3]}
40
[root@localhost shuzhu]# echo ${array1[2]}
30

2)数组全部元素输出

方式一:echo ${数组名[*]}

方式二:echo  ${数组名[@]}
[root@localhost shuzhu]# echo ${array1[*]}
10 20 30 40 50
[root@localhost shuzhu]# echo ${array1[@]}
10 20 30 40 50

3)任意字符起输出任意个数数组元素 (数组切片)

方式一:echo ${数组名[*]:下标:个数}

方式一:echo ${数组名[@]:下标:个数}
[root@localhost shuzhu]# echo ${array1[@]:2:3}
30 40 50

4)条件判断输出方式

该输出方式,当数组存在元素,则输出数组的,如果不存在,则输出我们指定的内容

格式:echo ${数组名:-'选择输出的内容'}

5)数组的删除

①删除单个数组元素

格式: unset   数组名[N]      ##其中N为存在元素的数组下标
[root@localhost shuzhu]# echo ${array2[*]}
11 12 13 14 15 16 17 18 19 20
[root@localhost shuzhu]# unset array2[3]
[root@localhost shuzhu]# echo ${array2[*]}
11 12 13 15 16 17 18 19 20

​②删除整个数组

格式:  unset  数组名[*]    或则  unset  数组名[@]
[root@localhost shuzhu]# echo ${array2[*]}
11 12 13 15 16 17 18 19 20
[root@localhost shuzhu]# unset array2[*]
[root@localhost shuzhu]# echo ${array2[*]}
 
[root@localhost shuzhu]# 

6)数组长度统计及其其他作用

①统计数组长度的方法

格式:echo ${#数组名[*]}或则 echo ${#数组名[@]}
[root@localhost shuzhu]# echo ${#array2[*]}
10
[root@localhost shuzhu]# echo ${#array2[@]}
10
[root@localhost shuzhu]# 

数组下标显示

②用元素个数的方法来检测数组中是否存在空值  

数组空值产生的原因:

我们用方法四定义数组元素值时,可以随意指定下标位置,但与此同时中间的有些数组下标中的元素就成了空值 。

操作过程: 

  1.  定义一个变量获取数组的长度:新变量= ${#数组名[*]}
  2. 输出依据数组长度的最后一个元素:echo  ${数组名[lenth-1]]
  3. 与数据列表最后一个值进行比较 
[root@localhost shuzhu]# arr1[0]=111
[root@localhost shuzhu]# arr1[2]=112
[root@localhost shuzhu]# arr1[3]=113
[root@localhost shuzhu]# arr1[4]=114
[root@localhost shuzhu]# lenth=${#arr1[*]}
[root@localhost shuzhu]# echo ${arr1[lenth-1]}
113
[root@localhost shuzhu]# echo ${arr1[*]}
111 112 113 114

  

四、数组的遍历和替换 

1)数组的遍历

我们可以用数组存储多个元素作为循环条件来使用,当数组配上循环,就可以形成一个指定范围和数据的遍历

[root@localhost shuzhu]# arry=(1 2 3 4 5 6 7 8 9 10)
[root@localhost shuzhu]# for i in ${arry[*]}
> do
> echo $i
> done
1
2
3
4
5
6
7
8
9
10

2)数组中元素的替换

①数组的临时替换

格式: echo ${数组名[*]/被替换的字符或字段/新的字符或字段} 
[root@localhost shuzhu]# arry=(100 200 300 400 500 600 700)
[root@localhost shuzhu]# echo ${arry[*]/00/22}
122 222 322 422 522 622 722
[root@localhost shuzhu]# echo ${arry[*]/2/3}
100 300 300 400 500 600 700
[root@localhost shuzhu]# echo ${arry[*]/300/200}
100 200 200 400 500 600 700
[root@localhost shuzhu]# echo ${arry[*]}
100 200 300 400 500 600 700
[root@localhost shuzhu]# 

  

②永久替换数组内容

原理描述: 用一个新的数组去接收临时替换的数组的元素(达到永久替换的效果)

[root@localhost shuzhu]# arry=(100 200 300 400 500 600 700)
[root@localhost shuzhu]# echo ${arry[*]}
100 200 300 400 500 600 700
[root@localhost shuzhu]# arry1=${arry[*]/300/200}
[root@localhost shuzhu]# echo ${arry1[*]}
100 200 200 400 500 600 700

五、数组追加元素

1)方式一:指定位置添加

与定义数组方法4一样,直接赋予新值覆盖原来的元素

数组名[N]=新value

2)方式二: 末尾追加元素

格式: 数组名[${#数组名[*]}] =新元素   或     数组名[${#数组名[@]}] =新元素
[root@localhost shuzhu]# echo ${arry[*]}
100 200 300 400 500 600 700
[root@localhost shuzhu]# arry[${#arry[*]}]=800
[root@localhost shuzhu]# echo ${arry[*]}
100 200 300 400 500 600 700 800

3)方式三:进行末尾多元素追加

格式:数组名=("${数组名[@]}"  value1   value2 ......valueN) 
[root@localhost shuzhu]# arry=(100 200 300 400 500 600 700)
[root@localhost shuzhu]# echo ${arry[@]}
100 200 300 400 500 600 700
[root@localhost shuzhu]# arry=("${arry[@]}" 800 900 1000)
[root@localhost shuzhu]# echo ${arry[@]}
100 200 300 400 500 600 700 800 900 1000

4)方法四:直接末尾追加多元素且格式最为简单 

格式:  数组名+=(value1 value2 ........valueN)
[root@localhost shuzhu]# arry=(100 200 300 400 500 600 700)
[root@localhost shuzhu]# echo ${arry[@]}
100 200 300 400 500 600 700
[root@localhost shuzhu]# arry+=(800 900 1000)
[root@localhost shuzhu]# echo ${arry[@]}
100 200 300 400 500 600 700 800 900 1000

六、数组在函数的传参

需求:定义一个遍历数组的函数,并且让数组里的元素翻倍输出

#!/bin/bash
a=0
double (){
local array=$@
for i  in  ${array[@]}
do
 let i*=2
array[$a]=$i
let a++
done
echo ${array[@]}
}
 
 
##########main#########
array=(10 20 30 40 50)
RESULT=$(double ${array[@]})
echo "翻倍后的数组为" $RESULT

验证:

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值