[Linux][Shell][Shell函数]详细讲解
1.创建函数
- 语法:关键字 或 C风格
function name { commands } name() { commands }
2.执行函数
- 执行Shell函数,直接写函数名即可,无需添加其他内容
- 函数必须先定义,再执行,Shell脚本自上而下加载
- 函数体内定义的变量,称之为局部变量
- 函数内,使⽤
local
关键字,定义局部变量
- 函数内,使⽤
- 函数体内需要添加
return
语句,作⽤是退出函数,且赋予返回值给调⽤该函数的程序 return
语句和exit
不同return
:结束函数的执⾏,返回⼀个(退出值、返回值)exit
:结束Shell环境,返回⼀个(退出值、返回值)给当前的shell
- 函数如果单独写⼊⼀个⽂件⾥,需要⽤
source
读取- 本质:读取到当前环境变量中
3.给函数传入参数
- 传参和调用形势类似于在命令行中给一个脚本传入参数
SnowK() { echo "传入的参数为$1 $2 $3, 共 $# 个" } SnowK I am DieSnowK
- 示例:URL检测脚本
#!/bin/bash Usage() { echo "Usage: $0 url" exit 1 } # 程序开发的习惯,设置一个入口函数,对需要执行的函数统一管理 CheckUrl() { wget --spider -q -o /dev/null --tries=1 -T 5 $1 if [ $? -eq 0 ] then echo "$1 is Yes" else echo "$1 is No" fi } main() { if [ $# -ne 1 ] then Usage fi CheckUrl $1 } # $* -> 将所有传入进来的参数,当作一个整体,是常见用法 main $*
4.返回值
- 函数结束,有状态码
- 通过
$?
获得 - 用
return
可以制定特殊的退出状态码
- 通过
- 这种方式有一个坑
- 函数结束后应⽴即取返回值
- 否则会被覆盖丢失
- 退出状态码在0~255之间
- 函数结束后应⽴即取返回值
5.函数中处理变量
1.全局变量
- 默认情况下,脚本⾥定义的任何变量都是全局变量,只要不是写在函数体内
2.局部变量
- ⽆需在函数中使⽤全局变量,函数内部使⽤的任何变量都可以被声明为局部变量,为了实现这⼀点,只需要加上
local
关键字即可func() { local temp=$[ $value + 5 ] result=$[ $temp * 2 ] }
原文地址:https://blog.csdn.net/qq_37281656/article/details/140341468
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!