shell脚本中函数的运用

文章介绍了Shell脚本中函数的定义和使用,包括如何避免代码重复、提高代码可读性。函数的作用范围限于定义的Shell环境,局部变量可通过`local`命令设置。文中还提供了两个实验示例:使用递归函数计算阶乘和创建函数库。
摘要由CSDN通过智能技术生成

一、函数的定义

shell函数是经常使用的,因为有些命令序列是需要反复调用执行的,将命令序列按格式写在一起,以便可以重复的使用。
shell函数:
使用函数可以避免代码重复
使用函数可以将大的工程分割为若干小的功能模块,代码的可读性更强
格式为:

[function]  函数名(){
命令序列
[return x]
}
或
函数名 () {
命令序列
}

[function]是可选的,表示该函数的功能,是可以省略掉的,函数后面加一个(),里面是没有内容,而执行的命令序列是放在{}里面的,[return x]的作用是当命令序列执行完后返回给系统的一个值,该项也是可以省略的。
函数返回值:
return表示退出函数并返回一个退出值,脚本可以用$?变量显示该值
使用原则:

1、函数一结束就取返回值,因为$?变量只返回执行的最后一条命令的退出状态码
2、退出的代码必须是0~255,超出时值将为除以256取余

二、函数的作用范围

在 Shell 脚本中函数的执行并不会开启一个新的子Shell,而是仅在当前定义的Shell 环境中有效。如果Shell脚本中的变量没有经过特殊设定,默认在整个脚本中都是有效的。在编写脚本时,有时需要将变量的值限定在函数内部,可以通过内置命令local来实现。

  • 函数内部变量的使用,可以避免函数内外同时出现同名变量对脚本结果的影响。
  • shell脚本中变量默认全局有效
  • local命令:将变量限定在函数内部使用
[root@c7-1 home]# vim dome4.sh 

#!/bin/bash
myfunc () {
local a
a=8
echo $a

}
a=9
myfunc
echo $a


[root@c7-1 home]# bash dome4.sh 
8
9

#上述脚本中myfun函数内部使用了local命令设置变量a,其作用是将变量a限定在函数内部。
#myfun函数外部同样定义了变量i,内部变量a和全局变量i互不影响。
#脚本执行时先调用了函数myfun,函数内部变量a为8,所以输出结果是8。
#调用完函数之后,给变量a赋值为9,再打印外部变量i,所以又输出9

三、实验

1、阶乘

阶乘可以使用for循环做,但是for循环的效率比递归函数低,所以这里使用函数递归的方式写。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

#上述脚本中先运行交互式变量,$n,根据你输入的数字调用函数fa,
#先if判断我输入的数是否等于1,我输入的5,不等于1,条件为假,运行else
#然后定义a变量 $1 -1 也就是 5-1 得出4 ;定义b变量,在把a的值 4 调用给fa;他俩都是内部变量
#然后echo $1 也就是5,乘 $b 4;只有自上而下运行完所有命令 才会再次用$res的调用a,继续判断$tmp是否等于1,直至5-1=4 4-1=3 3-1=2 2-1=1;
#所以5x4x3x2x1=120

2、函数库

先定义一个函数库func,里面写入五个函数
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值