禅道博客

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

《Linux命令行与shell脚本编程大全》第17章:创建函数(学习笔记)

2022-11-08 10:23:15
刘沙沙
原创 126
摘要:这是一本关于Linux命令行与shell脚本编程的全方位教程,针对Linux系统的最新特性进行了全面更新,不仅涵盖了详尽的动手教程和现实世界中的实用信息,还提供了与所学内容相关的参考信息和背景资料。本文是禅道团队成员对于本书第17章节的学习笔记。

17.1 基本的脚本函数

17.1.1 创建函数

格式1:

function name {

commands

 }

格式2:

name( ) {

commands

}

17.1.2 使用函数

注意:

1. 要先定义函数再使用,否则报错

2. 函数名要唯一

3. 重新定义函数后,新定义会覆盖原来的函数定义


17.2 返回值

函数运行结束时会返回一个退出状态码。

17.2.1 默认退出状态码

在函数执行结束后,可以用标准变量$?来确定函数的退出状态码。

因为函数的退出状态码是函数中最后一条命令返回的退出状态码,所以无法知道函数中其他的命令是否运行成功。


17.2.2 使用 return 命令

return命令来退出函数并返回特定的退出状态码,return命令允许指定一个整数值来定义函数的退出状态码。

注意:

1. 函数退出状态码必须是0~255,较大值和字符串不适合用这种方法。

2. 函数一结束就取返回值。

17.2.3 使用函数输出


17.3 在函数中使用变量

将函数输出保存在变量中

result=$(func1)

17.3.1 向函数传递参数

$#判断传给函数的参数数目

在脚本中指定函数时,必须将参数和函数放在同一行func1 $1 $2

echo -n 不换行输出

echo -e激活转义字符

函数无法直接获取脚本在命令行中的参数值。

需要在调用函数时手动将参数传过去。

17.3.2 在函数中处理变量

1. 全局变量

函数内的全局变量在脚本主体部分读取,脚本主体的全局变量能被函数读取。

2. 局部变量

函数内部使用的任何变量都可以被声明成局部变量。

变量声明时加local

local temp

在变量赋值语句中加local关键字

local temp=$[ $value + 5 ]


17.4 数组变量和函数

17.4.1 向函数传数组参数

数组变量作为函数参数,函数只会取数组变量的第一个值。需要将数组变量的值分解成单个的值。

17.4.2 从函数返回数组


17.5 函数递归


理解递归

Hello World

进入递归函数---------------------------------

&1 本次执行输入值 is 5

---------------------------------

$temp is 4

进入递归函数---------------------------------

&1 本次执行输入值 is 4

---------------------------------

$temp is 3

进入递归函数---------------------------------

&1 本次执行输入值 is 3

---------------------------------

$temp is 2

进入递归函数---------------------------------

&1 本次执行输入值 is 2

---------------------------------

$temp is 1

进入递归函数---------------------------------

&1 本次执行输入值 is 1

本次执行输入值 is 1,跳出递归

跳出递归函数---------------------------------

对应输入值是2的调用

$result is 1

 DGFunction 本次执行返回值 1*2

---------------------------------

对应输入值是3的调用

$result is 2

 DGFunction 本次执行返回值 2*3

---------------------------------

对应输入值是4的调用

$result is 6

 DGFunction 本次执行返回值 6*4

---------------------------------

对应输入值是5的调用

$result is 24

 DGFunction 本次执行返回值 24*5

---------------------------------

result is 120


17.6 创建库

source命令或者点操作符可以使用库中的函数,如果不在同一目录下,需要使用相应路径访问该文件。


17.7 在命令行上使用函数

17.7.1 在命令行上创建函数

可以直接在命令行上定义一个函数,采用单行方式定义函数,命令后要加分号

采用多行方式定义函数,末尾使用花括号,代表函数定义完成

17.7.2 在.bashrc 文件中定义函数

1. 直接定义函数

在.bashrc文件中最下方添加函数

2. 读取函数文件

用source命令(或者它的别名点操作符)将库文件中的函数 添加到你的.bashrc脚本中。

发表评论
评论通过审核后显示。