注: 以下内容借鉴于老男孩出版的 shell 编程实战这个文档编写的.
一, 什么是函数?
在 shell 脚本中, 函数类似 Linux 系统中的命令别名, 可以简化程序的代码量, 让程序
更易读, 易改, 易用.
简单地说, 函数的作用就是将程序里多次被调用的相同代码组合起来(函数体), 并为其取一个名字(即函数名), 其他所有想重复调用这部分代码的地方都只需要调用这个名字就可以了. 当需要修改这部分重复代码时, 只需要改变函数体内的一份代码即可实现对所有调用的修改, 也可以把函数独立地写到文件里, 当需要调用函数时, 再加载进来使用.
使用 shell 函数的优势如下:
把相同的程序段定义成函数, 可以减少整个程序的代码量, 提升开发效率;
增加程序的可读性, 易读性, 提升管理效率;
可以实现程序功能模块化, 使得程序具备通用性(可移植性).
二, shell 函数的语法
(1)标准写法如下:
function 函数名() { #推荐使用此格式, 花括号里面写入的就是要执行的命令
return n
}
(2)简化写法如下:
函数名() { #不用 function 的方法
指令...
return n
}
在 shell 函数的语法中, function 表示声明一个函数, 这部分可以省略不写.
三, shell 函数的执行
shell 的函数分为最基本的函数和可以传参的函数两种, 其执行方式分别如下:
(1)执行不带参数的函数时, 直接输入函数名即可(注意不带小括号), 格式如下:
函数名
有关执行函数的重要说明:
执行 shell 函数时, 函数名前的 function 和函数后的小括号都不要带;
函数的定义必须在要执行的程序前面定义或加载;
shell 执行系统中各种程序的执行顺序为: 系统别名→函数→系统命令→可执行命令;
函数执行时, 会和调用它的脚本共用变量, 也可以为函数设定局部变量及特殊位置参数;
在 shell 函数里面, return 命令的功能和 exit 类似, return 的作用是退出函数, 而 exit 是退出脚本;
return 语句会返回一个退出值 (即返回值) 给调用函数的当前程序, 而 exit 会返回一个退出值 (即返回值) 给执行程序的当前 shell;
如果将函数存放在独立的文件中, 被脚本加载使用时, 需要使用 source 或 "." 来加载.
在函数内一般使用 local 定义局部变量, 这些变量离开函数后就会消失.
(2)带参数的函数执行方法, 格式如下:
函数名 参数 1 参数 2
函数后面接参数的说明:
shell 的位置参数 ($1,$2...,$#,$? 及[email protected]) 都可以作为函数的参数来使用;
此时父脚本的参数临时地被函数参数所掩盖或隐藏;
$0 比较特殊, 它仍然是父脚本的名称;
当函数执行完成时, 原来的命令行脚本的参数即可恢复;
函数的参数变量是在函数体里面定义的.
四, shell 函数的基础使用举例
(1)示例 1:
- [[email protected] ~]# VIM a.sh
- #!/bin/bash
- # 以下是定义 a 和 b 两个函数
- function a(){
- echo "aaaaaaaaaaa"
- }
- function b(){
- echo "bbbbbbbbbbb"
- }
- b #在脚本中执行函数名以便调用函数, 这里先调用了函数 b
- a #再调用函数 a
- [[email protected] ~]# sh a.sh #执行结果如下
- bbbbbbbbbbb
- aaaaaaaaaaa
老男孩编写的关于 shell 函数的内容, 只有两个大的脚本没有写上来了, 建议看原版文档来了解 shell, 后面的内容, 我没什么耐心些了, 可以在我博客置顶文章的末尾, 下载原版文档进行学习.
来源: http://www.bubuko.com/infodetail-3201873.html