Shell脚本编程概述(三):函数和数组

一、函数:function

 1.function概念

           function是一种过程式编程,目的在于代码重用,是一种模块化编程结构化编程编程方式

           函数:把一段独立功能的代码当作一个整体,并为之一个名字;命名的代码段

     注意:

           1) 定义函数的代码段不会自动执行,在调用时执行;所谓调用函数,在代码中给定函数名即可;

2) 函数名出现的任何位置,在代码执行时,都会被自动替换为函数代码;

  2.语法

语法一:

function  FUNCTION_NAME  {

...函数体...

}

语法二:

FUNCTION_NAME()  {

...函数体...

}

  3.函数的生命周期:每次被调用时创建,返回时终止;

其状态返回结果为函数体中运行的最后一条命令的状态结果;

自定义状态返回值,需要使用:return

return[0-255]

0:成功

1-255:失败

   4.函数返回值:

      (1)函数的执行结果返回值:

    1)使用echo或printf命令进行输出;

    2)函数体中调用的命令的执行结果;

       (2)函数的退出状态码:

    1)默认取决于函数体中执行的最后一条命令的退出状态码;

    2)自定义:return

  5.传递参数给函数:

            $1,$2, ...引用传递给函数的参数;

            $*$@引用所有参数

            $#引用传递的参数的个数;

       在调用函数时,在函数名后面以空白符分隔给定参数列表即可,例如,testfunc  arg1 arg2 arg3 …

  6.函数变量作用域

局部变量:作用域是函数的生命周期;在函数结束时被自动销毁;

定义局部变量的方法:localVARIABLE=VALUE

本地变量:作用域是运行脚本的shell进程的生命周期;因此,其作用范围为当前shell脚本程序文件;

  7.函数递归:

函数直接或间接调用自身;

 

 

 

二、数组:ARRAY

  1.数组:

           变量存储单个元素的内存空间;数组存储多个元素的连续的内存空间;

           格式数组名[索引]

      数组名:整个数组只有一个名字;

      数组索引:编号从0开始;

           引用方法:${ARRAY_NAME[INDEX]}

   注意:

         1)引用数组时只给数组名,表示引用下标为0的元素;

         2)关联数组bash-4及之后的版本,支持自定义索引格式,而不仅仅是0,1,2,...数字格式

 

  2.声明数组:

declare  -a NAME:声明索引数组;

declare  -A NAME:声明关联数组;

 

  3.数组中元素的赋值方式

      (1) 一次只赋值一个元素ARRAY_NAME[INDEX]=value

      (2) 一次赋值全部元素ARRAY_NAME=("VAL1" "VAL2" "VAL3"  ...)

      (3) 只赋值特定元素ARRAY_NAME=([0]="VAL1" [3]="VAL4" ...)

     注意:bash支持稀疏格式的数组;

      (4)交互式读取赋值: read -a  ARRAY_NAME

 

  4.数组的长度(数组中元素的个数):

${#ARRAY_NAME[*]}

${#ARRAY_NAME[@]}

 

  5.引用数组中的所有元素:

${ARRAY_NAME[*]}

${ARRAY_NAME[@]}

 

  6.数组元素切片: ${ARRAY_NAME[@]:offset:number}

offset:要路过的元素个数;

number:要取出的元素个数;省略number时,表示取偏移量之后的所有元素;

 

  7.向非稀疏格式数组中追加元素:

ARRAY_NAME[${#ARRAY_NAME[*]}]=

 

  8.删除数组中的某元素:

unset  ARRAY[INDEX]

 

  9.关联数组:

declare  -A ARRAY_NAME

ARRAY_NAME=([index_name1]="value1"  [index_name2]="value2" ...)

你可能感兴趣的:(function,shell,array)