关于函数的介绍和使用
1.什么是函数?
函数其实就是一锥命令的合集,用来完成特定功能的代码块,
你可以对它进行自定义命令,并且可以在脚本中任意位置使用
这个函数,要使用定义的函数,只需要填写函数名称就可以了。
2.函数的作用:
(1)使用函数可以让代码模块化,便于代码的复用,
同时增加脚本的可读性。
(2)函数和变量类似,必须先定义才可以调用,
如果定义不调用则不会被执行。
============================================
3.如何定义Shell函数,可以通过如下两种方式进行定义。
#方式一:
函数名(){
command1
command2
...
commandN
}
#方式二
function 函数名{
command1
command2
...
commandN
}
============================================
例子:
#!/bin/bash
#第一张定义函数的方式
function fun01{
echo "这是第一个函数的输出..."
}
#第二张定义函数的方式
fun02(){
echo "这是第2个函数的输出..."
}
fun01
fun02
============================================
4.如何调用Shell函数,直接使用函数调用即可。
在函数内部也可以使用$1,$2..$n的方式传递参数
#1.命令行定义函数
[root@test shell]# fun1() {echo "hello,Shell";}
hello,shell
#2.命令行调用函数
[root@test shell]# fun1
hello,Shell
#3.给函数传递参数
[root@test shell]# fun2() [ echo "hello,$1";]
[root@test shell]# fun2 linux
hello,Linux
#4.给函数传递多个参数{$*,接收所有的参数传递}
[root@test shell]# fun3() {echo "hello,$*";}
[root@test shell]# fun3 zhangsan lisi wangwu
hello,zhangsan lisi wangwu
=============================================
5.函数传参示例,使用变量方式传递固定值
#!/bin/bash
fun_1(){
echo "$num"
}
num=10 #传递参数
fun_1 #调用函数
[root@test shell]# sh fun_1.sh #执行脚本
10
============================================
例子:
#1.执行脚本传递位置参数$1,传递的值是oldboy
[root@test shell]# sh fun02.sh liu
#!/bin/bash
fun_1(){
#3.执行函数,最后使用echo输出$num的值 --->liu
echo "$num"
}
#2.将脚本的$1传递的位置参数付给num变量 --->num=liu
num=$1 #传递参数
fun_1 #调用函数
===========================================
6.函数参数示例,传递多个函数参数
#!/bin/bash
fun_1(){
echo "$1" "$2" "$3"
}
#rc=$(fun_1 10 20 30 ) #传递固定的值
rc=$(fun_1 $1 $2 $3) #传递可变的值
[root@test shell]# sh fun_4.sh 10 20 30 #执行脚本
传递参数的值为,10 20 30
============================================
(2)[root@test shell]# cat fun_5.sh
#!/bin/bash
fun_1(){
echo "$num1" "$num2" "$num3"
}
num1=$1 #将脚本位置参数一的值传递给变量num1
num2=$2 #将脚本位置参数二的值传递给变量num2
num3=$3 #将脚本位置参数三的值传递给变量num3
rc_$(fun_1) #将函数执行的结果保存至rc变量中,便于后续echo输出
echo "传递参数的值为,$rc"
====================================
(3)[root@test shell]# cat cale_6.sh
#!/bin/bash
cale (){
case $2 in
+)
echo $1 + $3 = $(( $1 + $3 ))
;;
-)
echo $1 - $3 = $(( $1 - $3 ))
;;
/)
echo $1 / $3 = $(( $1 / #3 ))
;;
\*)
echo $1 * $3 =$(( $1\*$3 ))
esac
}
cale $1 $2 $3
==================================================
7.函数状态返回:
Shell的函数返回值,也算是退出的状态。在shell中只有echo、return
两种方式。
(1)使用return返回值:只能返回1-255的整数,函数使用return返回值,
通常只是用来供其他地方调用获取状态,因此通常仅返回0或1,
0表示成功,
1表示失败。
(2)使用echo返回值:使用echo可以返回任何字符串结果,通常用于返回数据,
比如一个字符串值或者列表值。
示例:1.shell函数echo、return返回值
[root@test shell]# cat fun01_echo_return.sh
#!/bin/bash
fun_echo_return(){
echo 100 #返回函数执行后的数据
return 1 #返回函数执行后的状态码(放置最后)
}
return='fun_echo_return'
echo "函数的状态是:$?"
echo "函数的返回值是:$result"
[root@test shell]# sh fun01_echo_return.sh
函数的状态码是:1
函数的返回值是:100
============================================
示例2:判断文件是否存在
代码:
#!/bin/bash
file=/etc/passwd
t_file(){
if [ -f $file ];then
return 20
else
return 30
fi
}
t_file
if [ $? -eq 20 ];then
echo "文件存在"
elif [ $? -eq 30 ];then
echo "文件不存在"
fi
=================================
案例:shell函数返回场景练习,例子:猜数字游戏。
(1)如果用户输入的数值大于0且小于10 则返回0.
(2)如果用户输入的数值大于等于10且小于20则返回1
(3)如果用户输入的数值大于等于20且小于30,则返回2
(4)输入其余数值则返回3
代码:
#!/bin/bash
checknum(){
read -p "请输入对应的数字:" num
if [ $num -ge 0 -a $num -lt 10 ];then
return 0
elif [ $num -ge 10 -a $num -lt 20 ];then
return 1
elif [ $num -ge 20 -a $num -lt 30 ];then
return 2
else
return 3
fi
}
#调用函数,函数执行后会通过return返回对应的状态码
checknum
#根据函数返回值进行判断
if [ $? -eq 0 ];then
echo "你输入的数字是,$num,大于0小于10"
elif [ $? -eq 1];then
echo "你输入的数字是,$num,大于10小于20"
elif [ $? -eq 2 ];then
echo "你输入的数字是,$num,大于20小于30"
fi
============================================
网友评论