《Linux命令行与shell脚本编程大全》第17章
原创- 2023-12-21 14:56:08
- 999
本篇目录
17.1 基本的脚本函数
17.1.1 创建函数
方式一:
function name {
commands
}
方式二:
name() {
commands
}
name --函数的唯一名称
commands --构成函数的一条或多条bash shell命令
17.2 返回值
函数运行结束时会返回一个退出状态码,三种不同的方法为函数生成退出状态码
17.2.1 默认退出状态码
默认情况下,函数的退出状态码是函数中最后一条命令返回的退出状态码。在函数执行结束后,可以用标准变量$?来确定函数的退出状态码。
由于只能返回最后一条语句执行的退出状态码,所以使用函数的默认退出状态码是很危险的。
17.2.2 使用return命令
bash shell 使用return命令来退出函数并返回特定的退出状态码。return命令允许指定一个整数值来定义函数的退出状态码,从而提供了一种简单的途径来编程设定函数退出状态码。
注:(1)函数一结束就取返回值;(2)退出状态码必须是0~255。
17.2.3 使用函数输出
17.3 在函数中使用变量
17.3.1 向函数传递参数
函数可以使用标准的参数环境变量来表示命令行上传给函数的参数。函数名会在$0变量中定义,函数命令行上的任何参数都会通过$1、$2等定义。
也可以用特殊变量 $# 来判断传给函数的参数数目。
17.3.2 在函数中处理变量
1.全局变量
全局变量是在shell脚本中任何地方都有效的变量。默认情况下,在脚本中定义的任何变量都是全局变量,在函数外定义的变量可在函数内正常访问。
2.局部变量
无需在函数中使用全局变量,函数内部使用的任何变量都可以被声明成局部变量。
local 关键字可以将变量变为局部变量。也可以在变量赋值语句中使用local关键字。
17.4 数组变量和函数
17.4.1 向函数传数组参数
17.5 函数递归
局部变量的一个特性是自成体系,除了从脚本命令行处获得的变量,自成体系的函数不需要使用任何外部资源。
17.6 创建库
bash shell 允许创建函数库文件,然后在多个脚本中引用该库文件。
source 命令会在当前shell上下文中执行命令,而不是创建一个新shell,可以用source命令来在shell脚本中运行库文件脚本,这样脚本就可以使用库中的函数了。
17.7 在命令行上使用函数
17.7.1 在命令行上创建函数
17.7.2 在.bashrc文件中定义函数
在命令行上直接定义shell函数的缺点时退出shell时,函数就消失了,一个简单的方法就是将函数定义在一个特定的位置,在每次启动一个新shell时都会由shell重新载入,最佳地点就是.bashrc文件,bash shell在每次启动时都会在主目录下查找这个文件。
可以在.bashrc文件中直接定义函数,也在文件中读取其他函数文件来定义函数,下次启动shell时,所有函数都可以在命令行界面下使用了。