您的位置:首页 > 运维架构 > Shell

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

2016-01-30 22:58 507 查看
一、函数:function 1.function概念 function是一种过程式编程,目的在于代码重用,是一种模块化编程、结构化编程编程方式 函数:把一段独立功能的代码当作一个整体,并为之一个名字;命名的代码段 注意: 1) 定义函数的代码段不会自动执行,在调用时执行;所谓调用函数,在代码中给定函数名即可;2) 函数名出现的任何位置,在代码执行时,都会被自动替换为函数代码; 2.语法语法一:function FUNCTION_NAME {...函数体...}语法二:FUNCTION_NAME() {...函数体...} 3.函数的生命周期:每次被调用时创建,返回时终止;其状态返回结果为函数体中运行的最后一条命令的状态结果;自定义状态返回值,需要使用:returnreturn[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_NAMEARRAY_NAME=([index_name1]="value1" [index_name2]="value2" ...)本文出自 “许鼎的博客” 博客,请务必保留此出处http://xuding.blog.51cto.com/4890434/1740097
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: