(五)shell函数
1、shell函数语法:
(1)标准的shell函数语法是:
function 函数名(){
函数体
你想执行的linux命令。。。
return 返回值
}
function是内置的关键字,表示后面的符号是你的函数名。
(2)简单的shell函数语法是:
函数名(){
函数体
return 返回值
}
2、执行shell函数
(1)shell函数写完要调用函数,才能执行函数。
(2)执行shell函数,直接写函数名即可,无需添加其他内容
(3)函数必须先定义再执行,shell脚本自上而下加载
(4)函数体内定义的变量称为局部变量。就是函数体内定义的变量,只能在函数体内有效,函数体外没有这个变量,就是函数体外就不能调用这个变量了。
(5)函数体内需要添加return语句,作用是退出函数(就是结束函数的执行了),且赋予返回值给调用函数的程序 (如果这个程序一般是shell脚本,这个返回值就调给shell脚本,当shell脚本执行完毕后,我们可以通过$?获取return的返回值)
(6)return语句和exit语句不同:
return只能写在函数中,作用是结束函数的执行,返回一个退出值;
exit是shell内置的命令,作用是结束shell环境,返回一个退出子shell的退出值,给当前的shell。
(7)函数如果是单独写在一个文件里,调用的时候需要source读取。
(8)函数内,使用local关键字,定义局部变量。
3、案例:详解shell环境与函数的执行
但是,linux自带的很多脚本,都是将函数定义和执行分开放在不同的文件中。
就是一个文件里只写函数,不执行;而另外一个脚本读取该函数文件,加载里面的函数。
所以,现在我们再写一个脚本test1.sh,功能是读取fun.sh脚本并且调用里面的ceshi函数
4、案例:展示函数脚本传入参数
5、案例:监测网站存活
功能:监测url是否正常
执行方式是: bash check_url.sh www.abcdefg.cn 后面的url当作一个参数传给脚本
现在我们把上面的脚本改造成一个函数版本:
6、案例:开发rsync管理脚本
前面我们开发过一个非函数版的,这里写一个函数版的。所以开发的整体思路的逻辑可以参考前面的非函数版。