第十二天:函数 function

一、函数介绍

函数function是由若干条shell命令组成的语句块,实现代码重用和模块化编程
它与shell程序形式上是相似的,不同的是它不是一个单独的进程,不能独立运行,而是shell程序的一部
函数和shell程序区别
Shell程序在子Shell中运行
函数在当前Shell中运行。因此在当前Shell中,函数可对shell中变量进行修改

二、管理函数

1、定义

#语法一:
func_name (){
...函数体...
}
#语法二:
function func_name {
...函数体...
}
#语法三:
function func_name () {
...函数体...
}

2、查看函数

#查看当前已定义的函数名
  declare -F
#查看当前已定义的函数定义
  declare -f
#查看指定当前已定义的函数名
  declare -f func_name
#查看当前已定义的函数名定义
  declare -F func_name
3、删除函数 
  unset func_name
4、函数调用
函数的调用方式,可在交互式环境下定义函数
可将函数放在脚本文件中作为它的一部分
可放在只包含函数的单独文件中
调用:函数只有被调用才会执行,通过给定函数名调用函数,函数名出现的地方,会被自动替换为函数
代码
函数的生命周期:被调用时创建,返回时终止
 
三、函数的返回值
函数的执行结果返回值:
  使用echo等命令进行输出
  函数体中调用命令的输出结果
函数的退出状态码:
  默认取决于函数中执行的最后一条命令的退出状态码
自定义退出状态码,其格式为:
  return 从函数中返回,用最后状态命令决定返回值
  return 0 无错误返回
  return 1-255 有错误返回
 
四、环境函数
类拟于环境变量,也可以定义环境函数,使子进程也可使用父进程定义的函数
定义环境函数:
  export -f function_name
  declare -xf function_name
查看环境函数:
  export -f
  declare -xf
 
五、函数参数
函数可以接受参数:
传递参数给函数:在函数名后面以空白分隔给定参数列表即可,如:testfunc arg1 arg2 ...
在函数体中当中,可使用$1, $2, ...调用这些参数;还可以使用$@, $*, $#等特殊变量
 
六、函数变量
变量作用域:
普通变量:只在当前shell进程有效,为执行脚本会启动专用子shell进程;因此,本地变量的作用
范围是当前shell脚本程序文件,包括脚本中的函数
环境变量:当前shell和子shell有效
本地变量:函数的生命周期;函数结束时变量被自动销毁
注意:
如果函数中定义了普通变量,且名称和局部变量相同,则使用本地变量
由于普通变量和局部变量会冲突,建议在函数中只使用本地变量
在函数中定义本地变量的方法
local NAME=VALUE
 
七、函数递归
函数递归:函数直接或间接调用自身,注意递归层数,可能会陷入死循环
递归特点:
函数内部自已调用自已
必须有结束函数的出口语句,防止死循环
posted @ 2024-01-22 21:59  djyhello  阅读(6)  评论(0编辑  收藏  举报