函数

概述

Function(函数) 就是代码块,函数中表示了一堆代码的集合,当调用函数的时候,则会执行函数中函数体内的命令

语法格式:

function NAME(){
    函数体
}
# 或者
NAME() {
    函数体
}

调用方式:在 shell 脚本中,函数并不会执行,只有在调用的时候,才会执行函数体中的命令

  • 直接使用函数名即可调用,函数名出现的地方,会被自动替换为函数体中的命令
  • 在调用函数时,传递参数给函数体,在函数名后面以空白分隔指定的参数列表即可。e.g.FunctionName ARG1 ARG2 …ARGn
    • 每个参数可以在函数体中使用位置参数进行引用,i.e.ARG1 在函数体中就是$1 的值,ARG2 在函数体中就是$2 的值,以此类推

函数的生命周期:被调用时创建,返回时终止

使用 return 命令返回自定义状态结果

  • 0:成功
  • 1-255:失败

函数中的变量:在函数体内定义的变量只对该函数生效,当函数生命周期结束时,变量失效。

注意:在函数体中,可以修改全局变量的值

函数的递归:函数直接或间接调用自身

函数递归的应用实例:

阶乘:N!=N(n-1)(n-2)…1

#/bin/bash
fact() {
  if [ $1 -eq 0 -o $1 -eq 1 ]; then
      echo 1
  else
      echo $[$1*$(fact $[$1-1])]
  fi}

fact $1

步骤:比如给 fact 传递参数 5

  • 如果 5 大于 0 或者大于 1,那么使用 5*fact 函数,且再次调用函数时参数为 5-1
  • 再次调用函数的时候,不但有 4,还有函数,i.e.5*4*fact 函数,直到函数的参数值为 1 或 0