首页 > 代码库 > 函数的调用

函数的调用

把那些在脚本中重复出现并且没有任何改变的代码,封装起来,在适当的场景中调用执行;
程序员将这种被封装起来的代码称为功能体,或者叫模块;
function —— 函数

在shell脚本编程中,函数是由若干条shell命令组成的语句块;通常用于代码重用和模块化封装;

函数里面的内容和shell程序形式上是一致的;不同之处就是,shell代码可以直接被执行;而函数中的内容,不能独立执行,只有被调用的时候才执行;

函数是在shell程序的当前shell中运行的;
bash
 bash script_file
 function

定义函数:
 函数是由两部分组成:
  函数名称 + 函数体(能够实现独立功能的shell语句块)

 语法一:
  function func_name {
   函数体
  }

 语法二:
  func_name() {
   函数体
  }
  注意:函数名和()之间不能加空白字符;

 注意:函数可以在交互式环境下定义,也可以在脚本中定义;

函数的使用
 函数在定义的时候,其函数体中包含的所有命令均不会被执行;只有函数被调用的时候,才会执行其中的命令语句;

 调用方式:通过直接给出函数名称的方式调用;

有很多的函数是存放于专门用于保存函数的文件中;如果想要调用这样的文件中保存的函数,使用source命令(.)加载文件,然后再以直接给出函数名称的方式调用函数;

使用set命令可以查看所有当前shell中生效的函数;
使用unset命令可以撤销已经定义的函数;

函数的返回值:
 两种返回值:
  函数的执行结果的返回值:
   1.在函数体中使用了echo或printf命令输出的结果;
   2.在函数体中某些命令输出的结果;
  函数的状态返回值:
   1.函数中最后一条命令的执行状态返回值;
   2.自定义退出状态码:
    return [n]
     n:0-255 (1 2 127尽可能不使用)
     0: 表示无错误返回
     1-255:有错误返回

    注意:只要函数在执行时,遇到了return命令,不管函数中的命令语句是否全部执行完成,立刻退出函数;

函数的生命周期:
 从被调用开始,到遇到return命令或全部的语句执行完成为止;

函数的实参
 在函数体中,可以使用$1,$2,..位置变量为函数提供参数;还可以使用$*或$@的方式引用所有位置参数;还可以使用$#计算为函数传递的参数个数;

 在调用函数的时候,直接在函数名称后面以空白字符分隔多个参数即可;比如:func_name arg1 arg2 ...

 传递给函数参数的位置参数,是调用函数的时候,函数名称后面的以空白字符分隔的字符串序列;跟脚本的位置参数不是一回事;

变量:
 shell中的变量为弱变量
  1.无需事先声明
  2.无需指定变量类型,默认为字符型

 变量分类:
  环境变量:
   当前shell及子shell
  本地变量:
   当前shell
  局部变量:
   local VAR_NAME=VALUE
   当前函数体
  位置变量
  特殊变量

建议:手动撤销自己定义或声明的所有变量;

函数的递归调用
 简单来说,就是在函数体中调用函数自身;


函数的调用