42、shell脚本详解(五)---函数的格式、传参、变量、递归、函数库
一、shell函数定义
将命令序列按格式写在一起,可方便重复使用命令序列
二、格式
1、格式一
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AEymMUjS-1646408613229)(C:\Users\XTC\AppData\Roaming\Typora\typora-user-images\1644825337012.png)]
2、格式二
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zNKElLEr-1646408613231)(C:\Users\XTC\AppData\Roaming\Typora\typora-user-images\1644825378075.png)]
三、函数返回值
- return表示退出函数并返回一个退出值,脚本中可以用 $ ? 变量显示该值
- 使用原则:
- 1、函数一结束就取返回值,因为$?变量只返回执行的最后一条命令的退出状态码
- 2、退出状态码必须是0~255,超出时值将为除以256取余
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TyqOfDW3-1646408613232)(C:\Users\XTC\AppData\Roaming\Typora\typora-user-images\1644825711705.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SgTUoVUX-1646408613232)(C:\Users\XTC\AppData\Roaming\Typora\typora-user-images\1644825727383.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DjwPF2om-1646408613232)(C:\Users\XTC\AppData\Roaming\Typora\typora-user-images\1644825794172.png)]
四、函数传参
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Kd1ukV7r-1646408613233)(C:\Users\XTC\AppData\Roaming\Typora\typora-user-images\1644826062089.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vWxewxPf-1646408613233)(C:\Users\XTC\AppData\Roaming\Typora\typora-user-images\1644826090580.png)]
五、函数变量的作用范围
- 函数在Shell脚本中仅在当前Shell环境中有效
- Shell脚本中变量默认全局有效
- 将变量限定在函数内部使用local命令
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Vs91Yeu0-1646408613233)(C:\Users\XTC\AppData\Roaming\Typora\typora-user-images\1644826416779.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gj8VmYig-1646408613234)(C:\Users\XTC\AppData\Roaming\Typora\typora-user-images\1644827472261.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wCsgntVj-1646408613234)(C:\Users\XTC\AppData\Roaming\Typora\typora-user-images\1644827483353.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-q8jjEolM-1646408613234)(C:\Users\XTC\AppData\Roaming\Typora\typora-user-images\1644827494139.png)]
六、递归
1、阶乘
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pWjTrBvt-1646408613234)(C:\Users\XTC\AppData\Roaming\Typora\typora-user-images\1644827734693.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BlyvkDSG-1646408613235)(C:\Users\XTC\AppData\Roaming\Typora\typora-user-images\1644828897517.png)]
2、递归查目录
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oLsjH7JD-1646408613235)(C:\Users\XTC\AppData\Roaming\Typora\typora-user-images\1644830223827.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OiPJMAX9-1646408613235)(C:\Users\XTC\AppData\Roaming\Typora\typora-user-images\1644830250812.png)]
七、创建函数库
把常用的函数放入一个单独的库脚本中,方便脚本在使用时,可直接调用这个库中的函数
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GukO0QJh-1646408613236)(C:\Users\XTC\AppData\Roaming\Typora\typora-user-images\1644830385314.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HSUypOq9-1646408613236)(C:\Users\XTC\AppData\Roaming\Typora\typora-user-images\1644830485640.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ELBLBLtR-1646408613236)(C:\Users\XTC\AppData\Roaming\Typora\typora-user-images\1644849905950.png)]
g-HSUypOq9-1646408613236)]
[外链图片转存中…(img-ELBLBLtR-1646408613236)]