Shell 函数
函数用于代码重用。
函数定义封装代码块,函数调用执行代码块,1次定义,N次调用,即N次重用。
1 基本使用
函数的使用步骤:1)定义函数;2)调用函数。
定义函数语法
function 函数名()
{
函数体
}
实际项目中,函数名要求见名思义。
简化写法:省略function
函数名()
{
函数体
}
例1:定义函数显示网站与作者。
function f1(){
echo "网站名称:小步教程"
echo "网站地址:www.xiaobuteach.com"
echo "网站作者:小步2023"
}
调用函数语法
函数名
没有定义参数时,直接写函数名即调用,就像我们调用其它命令一样。
可以理解为:系统的命令就是函数。
完整示例:
#定义函数
function f1(){
echo "网站名称:小步教程"
echo "网站地址:www.xiaobuteach.com"
echo "网站作者:小步2023"
}
#调用函数
f1
#再调用一次
f1
2 变量作用域
shell脚本文件的变量分两种:全局变量与局部变量。
全局变量:无论函数内部与外部,直接声明的变量都属于shell文件内的全局变量,定义之后整个文件都可以访问。我们之前使用变量都属于这类。
局部变量:函数内部通过local声明的变量,属于局部变量,离开函数就无法访问。
local 变量=值
或
local 变量
示例
var1="网站名称:小步教程"
function f1(){
var2="网站地址:www.xiaobuteach.com"
local var3
var3="网站作者:小步2023"
echo "内部访问var1:$var1"
echo "内部访问var2:$var2"
echo "内部访问var3:$var3"
}
f1
echo "外部访问var1:$var1"
echo "外部访问var2:$var2"
echo "外部访问var3:$var3"
注意事项
脚本文件里定义的变量,无论全局变量与局部变量,直接执行完毕之后,当前Shell无法访问。
3 参数
我们调用系统的命令都会传递参数,例如创建文件夹
mkdir 文件夹1
这里是一个参数;
还可以多个参数:
mddir 文件夹1 文件夹2 文件夹3
调用函数传递参数语法
函数名 参数1 参数2 …参数n
定义函数获取参数
不像很多语言,定义参数需要设置函数声明。Shell函数只需要在函数体中直接获取传递参数即可。
$1获取第1个参数,$2获取第2个参数,依次类推。
示例
例1:上述函数的网站名与作者由参数传递。
f3(){
echo "网站名称:$1"
echo "网站地址:$2"
echo "网站作者:$3"
}
#调用函数
f3 小步教程 www.xiaobuteach 小步2023
动态获取函数与参数信息
$FUNCNAME表示函数名字,$#表示参数个数,$*表示所有参数。
f3(){
echo "网站名称:$1"
echo "网站地址:$2"
echo "网站作者:$3"
echo "函数名:$FUNNAME,参数个数:$#,参数列表:$*"
}
#调用函数
f3 小步教程 www.xiaobuteach 小步2023