shell脚本函数详解(function)--shell学习

时间:2022-11-14 15:35:19
  • 在其他语言中,我们多次或者经常重复使用的代码片段,会被我们放入一个函数,然后多次引/调用该函数就十分方便了。shell脚本语言也不例外。

  • 我认为,函数是代码自身的第一层抽象封装。

源代码见github:https://github.com/timo1160139211/shellCoding/blob/master/function.sh

函数:function

语法

声明函数

两种方式声明函数:

1.”function”不可以省略(bash)

  function find { 
}

2.不得添加参数

  find() { 
}

两种声明方式效果等价。
注意

调用函数

直接指定函数名即可。一定要注意在声明之后才可以调用

  • 其实函数被调用时会被当作一个小脚本来看待,调用时也可以在函数名后跟参数。
  • 两种方式在调用时都不可以加() :
    • shell脚本函数详解(function)--shell学习

正确的调用方式:

  • shell脚本函数详解(function)--shell学习

我们看一下返回结果:

  • shell脚本函数详解(function)--shell学习

函数的返回值

既然把函数也当作一个小脚本,那么函数也有退出状态码咯?bingo! 函数运行结束后也会有一个退出状态码。可以用$?变量来显示上一条命令/函数执行结束的退出状态码。退出状态码中,默认的常用状态码这里有介绍->blog<-
当我们不想使用默认的退出状态码时,怎么办呢?当然,shell也为我们提供了return,像其他语言函数中return 一样,不过(整形)返回值必须在0~255之间。否则将会被进行 模256的运算,除此之外return也不可以返回字符串或者其他类型,那么我们想要返回字符串时怎么办呢?我们需要调用函数其他命令去使函数有输出值。

return

我们来看一下return 的使用:

  • shell脚本函数详解(function)--shell学习
  • shell脚本函数详解(function)--shell学习
  • shell脚本函数详解(function)--shell学习

那么,我么想要返回字符串时怎么办呢?我们需要这样做:捕获函数的输出到一个变量

函数的输出

我们来看一下函数的输出,函数的输出其实是值得函数中的命令的输出值的总和,我们来看这么一个例子:

  • 函数: 函数体内部一共有三行代码

    • shell脚本函数详解(function)--shell学习
  • 调用: 分别是普通调用捕获返回值调用

    • shell脚本函数详解(function)--shell学习
  • 返回值:我们用result捕获 ` ` 中运算的结果(即函数的输出)

    • shell脚本函数详解(function)--shell学习

从两次调用的结果顺序来看,普通调用按正常顺序输出,而捕获返回值调用则将第1、3行的echo作为函数的输出来对待。

在函数中使用变量

参数

1
全局变量
局部变量

创建库

命令行上的函数

.bashrc中定义函数

参考资料:

< Linux命令行与shell脚本编程大全 >人民邮电出版社 ISBN-9787115288899