二十七、Linux Shell编程及自动化运维实现 第4章 数组和函数

一、数组

    1.1数组简介

       变量:用一个固定的字符串,代替一个不固定的字符串

       数组:用一个固定的字符串,代替多个不固定的字符串

    1.2类型

       普通数组:只能使用整数作为数组的索引

       关联数组:可以使用字符串作为数组的索引

    1.3普通数组

       定义数组:

           方法一: 一次赋一个值

           数组名[下标]=变量值

           # array1[0]=pear

           # array1[1]=apple

           # array1[2]=orange

           # array1[3]=peach

           查看数组

           [root@localhost ~]# declare -a | grep array1

           declare -a array1='([0]="pear" [1]="apache" [2]="orange"               [3]="peach")'

           查看数组

           [root@localhost ~]# echo ${array1[@]}

           pear apache orange peach

           方法二: 一次赋多个值

           # array2=(tom jack alice)

           # array3=(`cat /etc/passwd`) 希望是将该文件中的每一个行作为        一个元数赋值给数组array3

           # array4=(`ls /var/ftp/Shell/for*`)

           # array5=(tom jack alice "bash shell")

           # colors=($red $blue $green $recolor)

           # array6=(1 2 3 4 5 6 7 "linux shell" [20]=saltstack)

       访问数组元素:

           # echo ${array1[0]} 访问数组中的第一个元数

           # echo ${array1[@]} 访问数组中所有元数 等同于 echo ${array1[*]}

           # echo ${#array1[@]} 统计数组元素的个数

           # echo ${!array2[@]} 获取数组元素的索引

           # echo ${array1[@]:1} 从数组下标1开始

           # echo ${array1[@]:1:2} 从数组下标1开始,访问两个元素

    1.4关联数组

       定义关联数组:

           先声明关联数组

           方法一: 一次赋一个值

           数组名[索引]=变量值

           # declare -A  ass_array1

           # ass_array1[index1]=pear

           # ass_array1[index2]=apple

           # ass_array1[index3]=orange

           # ass_array1[index4]=peach

           查看

           [root@localhost ~]# echo ${ass_array1[@]}

           peach pear apple orange

           方法二: 一次赋多个值

           # declare  -A  ass_array2

           # ass_array2=([index1]=tom [index2]=jack [index3]=alice [index4]='bash shell')

       查看数组:

           # echo ${ass_array2[index2]} 访问数组中的第二个元数

           # echo ${ass_array2[@]} 访问数组中所有元数 等同于 echo ${array1[*]}

           # echo ${#ass_array2[@]} 获得数组元数的个数

           # echo ${!ass_array2[@]} 获得数组元数的索引

    1.5数组和循环

       案例一:while脚本快速定义数组

           #!/bin/bash

           #循环读取文件,定义数组

           while read line

           do

           #hosts:数组名

           #[++i]:索引递增,++i是1开始,i++是0开始。

           #$line:值,即文件中的内容

                  hosts[++i]=$line

           done < /etc/hosts

           #输出索引每一行

           for i in ${!hosts[@]}

           do

           echo "$i  :   ${hosts[$i]}"

           done

       案例二:for脚本快速定义数组

           [root@localhost ~]# vim for_array.sh

           #!/bin/bash

           #2020

           #for array

           for line in `cat /etc/hosts`

              do

                   hosts[++i]=$line

           done

           for i in ${!hosts[@]}

           do

           echo "$i:  ${hosts[$i]}"

           done

二、函数

    2.1定义函数

       方法一:

       函数名() {

       函数要实现的功能代码

       }

       方法二:

       function 函数名 {

       函数要实现的功能代码

       }

    2.2调用函数

       函数名

       函数名 参数1 参数2

       案例一:阶乘传参

           #!/bin/bash

           #定义函数名fun1

           fun1() {

           #定义阶乘元数

           factorial=1

           #使阶乘循环

           for((i=1;i<=5;i++))

           do

           #阶乘公式

           factorial=$[$factorial*$i]

           done

           #输出阶乘结果

           echo “5的阶乘是:$factorial”

           }

           fun1

       案例二:函数传参 数组传参

           #!/bin/bash

           #1 先定义一个数组

           num=(1 2 3)

           #2 定义一个函数

           array(){

           factorial=1

           for i in $*     #(重点2)

           do

               #定义阶层的公式

              factorial=$[factorial * $i]

           done

           echo $factorial

           }

           #调用函数使用数组(重点1)

           array ${num[*]}

       案例三:函数结果 赋予数组

        
————————————————
版权声明:本文为CSDN博主「liuqi66」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/liuqi66/article/details/111499599

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值