1、函数的作用:
函数的功能就是将程序里多次被调用的相同代码组合起来,并取一个名称(即为函数名),以便在调用时,直接调用这个函数名称即可。
2、函数的语法
1、标准写法
function 函数名 (){
命令
return n
}
2、简化写法,不如推荐写法
函数名 {
命令
return n
}
3、简化写法
函数名 () {
命令
return n
}
3、函数执行说明
1、函数定义必须在要执行的程序前面定义或者加载
2、shell执行系统中各种程序的顺序:别名—函数—系统命令—可执行文件
3、如果函数存在一个独立的文件中,被脚本加载使用时,需要使用source或者“.”来加载
4、函数执行时会和调用它的脚本共用变量,也可以为函数定义局部变量或特殊位置参数
5、为函数定义局部变量使用local命令,这些变量离开函数就会失效
6、函数可以带参数执行,shell的位置参数,都可以作为函数的参数使用
7、函数的参数变量,在函数体内定义
4、函数基础实践
#!/bin/bash
china () {
echo "Welcome to Beijing"
return 0
}
5、函数体与脚本分离
思路:
1、定义函数体文件
#!/bin/bash
china () {
echo "Welcome to Beijing"
}
2、脚本文件调用函数
#!/bin/bash
[ -f /root/scripts/man ] && source /root/scripts/man || exit 1 #判断函数文件是否存在,并加载
china #调用函数
6、带参数的函数脚本
#!/bin/bash
name () {
echo "My name is $1"
return 0
}
name $1
7、函数传参转换成脚本文件命令行传参,判断指定网站URL是否正常
#!/bin/bash
function usage () {
echo "USAGE:$0 weburl" #定义用法函数,如果输入错误,提示用法
return 0
}
function checkurl () {
wget --spider -q -o /dev/null -T 10 --tries=1 $1 #检测weburl
if [ $? -eq 0 ]
then
echo "The Website is ok"
else
echo "The Website is no"
fi
}
function main () {
if [ $# -ne 1 ] #判断参数个数,避免多个参数引起错误
then
usage
fi
checkurl $1
}
main $* #将命令行得到的所有参数,也作为函数的参数传递给函数
8、引用系统函数库
#!/bin/bash
. /etc/init.d/functions #加载系统函数库
function china () {
if [ "$1" = "china" ]
then
action "yes" /bin/true #调用系统函数库中action函数
else
action "no" /bin/false
fi
}
china $* #将所有命令行参数作为函数参数调用
执行效果:
[root@localhost scripts]# bash sysfunction.sh china
yes [ 确定 ]
[root@localhost scripts]# bash sysfunction.sh chin
no [失败]