Shell函数

1.、

在编写脚本时,有些脚本需要反复使用,可以调用函数
来解决

语句块定义成函数约等于定义了一个别名

函数是脚本的别名

将命令序列按照格式写在一块

可方便重复使用命令序列

定义函数的方法:

(一)

function 函数名 {

命令序列

}

(二)

函数名(){

命令序列

}

(三)

function 函数名(){

命令序列

}

2. 函数注意事项

直接写函数中调用函数,直接写函数名

同名函数,后一个生效

调用函数一定要先定义

每个函数是独立

调用函数

function_name param1 param2 …      

 在上面的语法中,function_name 表示函数名称,其后面跟的 param1 、 param2… 表示函数 的参数

调用函数 : 直接执行函数名即可      

 函数名

带参数的函数的执行方法:      

函数名 参数

 写一个基本的函数文件

 3.查看函数

使用declare命令

-F:查看函数名

-f:函数具体信息

 

 也可以指定查看一个函数的具体信息

 4.删除函数

unset  函数名

 5.锁定变量

函数变量的作用范围:

函数在shell脚本中仅在当前的shell环境中有效

shell脚本中函数的变量默认全局有效

将变量限定在函数内部使用local命令

6.函数返回值

return表示退出函数并返回一个退出值,脚本中可以用$?变量表示该值

使用原则:

1.函数一结束就去返回值,应为$?变量只返回执行的最后一条命令的退出返回码

2.退出码必须是0-255,超出的值将为除以256取余

return 0 无错误返回

return 1-255 有错误返回

可以看到,脚本正常执行后,返回退出状态码为0,但是,脚本中有错误的命令,执行脚本后,状态码依然为0

所以,我们可以自定义一个返回值

return的具体用法
第一种是无返回值函数:即使函数不返回任何值(即 void 函数),也可以使用return语句来提早结束函数执行,不过在这种情况下通常可以省略return语句,因为函数会自动在执行完最后一行代码后返回

第二种是多路径返回

根据不同的逻辑分支,函数可能通过多个位置上的 return 语句返回不同的结果。

在函数中检测到一些不能执行的命令后直接退出,并返回指定的状态码,有助于去排查错误

也可以设置变量值为返回值,将该段脚本执行后所得到的结果,设为返回值,通过返回值,来判断该段脚本对自己的作用,选取段落进行详细查看,不需要将脚本从头到尾执行一遍

7.函数传参

指在调用自定义函数时向该函数传递参数的过程。这些参数可以

在函数内部作为变量使用,以便函数能够根据传入的数据执行不同的任务或操作


在这个例子中:
函数 add_numbers 接受两个参数 $1 和 $2。
参数通过位置来引用,即 $1 是第一个参数,$2 是第二个参数。
在函数体内部,通过 $1 和 $2 访问传递进来的参数值,并进行加法运算。
结果被存储在局部变量 result 中,并通过 echo 输出。
当调用 add_numbers 3 5 时,函数接收到参数 3 和 5,计算它们的和并将结果返回给调用者。

 8.函数递归

调用自己本身

示例:求任意数字的阶乘

 9.数组

数组中可以存放多个值。Bash Shell 只支持一维数组(不支持多维数组)

数组元素的下标由 0 开始。

Shell 数组用括号来表示,元素用"空格"符号分割开

在shell语句中,使用、遍历数组的时候,数组格式要写成 ${arr[@]} 或 ${arr[*]}

定义数组的方法

示例1:

格式:

数组名=(value1 value2 value3 ..... )

 示例2:

数组名=([0]=value1 [1]=value2......)

示例3:

数组名[0]="value1"

数组名[1]="value2"

数组名[2]="value3"

数组遍历

 

 数组切片

格式:${数组名[@/*]:其实位置:长度}

数组替换

格式:${数组名[@/*]:/查找字符/替换字符}

数组删除和指定下标的值删除 

数据追加元素

 使用下标追加

格式1:数组名[下标]=变量

格式2:数组名+=(变量1 变量2)

查看所有数组

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值