禅道博客

分享专业技术知识,文章内容干货满满

《Linux命令行与shell脚本编程大全》第17章

2023-12-21 14:56:08
胡方舟
原创 867
摘要:本文是该书第17章的阅读笔记,笔记了17章的核心内容:基本的脚本函数、返回值、函数变量、函数递归、创建库等内容。

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时,所有函数都可以在命令行界面下使用了。

关键字

暂时没有记录
评论通过审核后显示。