运维界的卡乐咪

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

1.数组介绍

平时定义a=1;b=2;c=3,变量如果多了,再一个个定义很费劲,并且取变量也费劲

简单的说,数组就是各种数据类型的元素按一定顺序排列的集合

数组就是把有限个元素变量或数据用一个名字命名,然后用编号区分他们的变量的集合。这个名字成为数组名,编号成为数组下标。组成数组的各个变量成为数组的分量,也成为数组的元素,有时也称为下标变量。

由于有了数组,可以用相同名字引用一系列变量,并用数组(索引)来识别它们。在许多场合,使用数组可以缩短和简化程序开发,因为可以利用索引值设计一个循环,高效处理多种情况。

2.数组定义与增删改查

方法1:array=(value1 value2 value3...)      

1)数组定义

[root@localhost test]# array=(1 2 3)      ==>一对括号表示数组,数组元素用“空格”符号分割开。

2)获取数组的长度

[root@localhost test]# echo ${#array[*]}    ==>用${#数组名[*或@]}  可以获得数组长度。
3
[root@localhost test]# echo ${#array[@]}   
3
3)打印数组元素,数组的下标从0开始

[root@localhost test]# echo ${array[0]}
1
[root@localhost test]# echo ${array[1]}
2
[root@localhost test]# echo ${array[2]}
3

4)打印所有数组元素
[root@localhost test]# echo ${array[*]}
1 2 3
[root@localhost test]# echo ${array[@]}
1 2 3
范例:利用for循环,打印数组array=(10.0.0.1 10.0.0.2 10.0.0.3)的元素

方法一:

#!/bin/sh
array=(10.0.0.1 10.0.0.2 10.0.0.3)
for ((i=0;i<=${#array[*]};i++))
do
    echo ${array[i]}
done
方法二:

#!/bin/sh

array=(10.0.0.1 10.0.0.2 10.0.0.3)

for i in ${array[*]}
do
        echo $i
done
5)数组赋值

直接通过数组名[下标]就可以对其进行引用赋值,如果下标不存在,自动添加新一个数组元素,如果存在就覆盖原来的值

[root@localhost test]# array[3]=4      ==>增加数组
[root@localhost test]# echo ${array[@]}
1 2 3 4
[root@localhost test]# array[2]=99      ==>修改数组元素
[root@localhost test]# echo ${array[@]}
1 2 99 4
6)数组删除

直接通过:unset 数组[下标] 可以清除相应的元素,不带下标,清除整个数组

[root@localhost test]# unset array[2]      ==>删除下标为2的数组元素
[root@localhost test]# echo ${array[@]}
1 2 4
[root@localhost test]# unset array       ==>删除整个数组
7)数组内容的截取和替换(和前面变量子串的替换很像)

截取:

[root@localhost test]# array=(1 2 3 4 5)
[root@localhost test]# echo ${array[@]:1:3}      ==>截取下标1到3的数组元素
2 3 4
[root@localhost test]# echo ${array[@]:3:2}
4 5
替换:

[root@localhost test]# echo ${array[@]/5/6}    ==>把数组中的5替换成6,临时生效,原数组未修改,和sed类似
1 2 3 4 6
[root@localhost test]# array1=(${array[@]/5/6})
[root@localhost test]# echo ${array1[@]}
1 2 3 4 6
3.把命令结果定义数组的方法

[root@localhost test]# array=($(ls /))
[root@localhost test]# echo ${array[@]}
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var

 

Shell数组小结:

1、定义

静态数组:array=(1 2 3)

动态数组:array=($(ls))

2、打印:

打印所有元素:${array[@]}或${array[*]}

打印数组长度:${#array[@]}或${#array[*]}

打印单个元素:${array[i]} i是数组的下标

3、循环打印

#!/bin/sh
array=(10.0.0.1 10.0.0.2 10.0.0.3)
for ((i=0;i<=${#array[*]};i++))
do
    echo ${array[i]}
done

 

实例1:利用数组,打印下面这句话中字母数不大于6的单词。

I am good teacher welcome to my training class.

方法一:

[root@localhost ~]# cat array1.sh
#!/bin/sh
array=(I am good teacher welcome to my training class)
for ((i=0;i<=${#array[*]};i++))
do
    if ((${#array[i]}<=6));then
        echo ${array[i]}
    fi
done

实例2:批量检查多个网站地址是否正常?

要求:

①、shell数组方法实现,检测策略尽量模拟用户访问。

②、每10秒钟做一次所有的检测,无法访问的输出报警。

③、待检测的地址如下

http://www.baidu.com

http://www.taobao.com

http://www.qq.com

http://10.0.0.9

分步实现:

1.把URL定义成数组,然后while打印出来

2.编写URL检测脚本

3.组合实现整个案例

 

posted on 2020-03-03 20:26  卡乐咪运维  阅读(190)  评论(0)    收藏  举报