1. 语法
方法1:
函数名() {
函数体
return n
}
方法2:
function 函数名() {
函数体
return n
}
2. 调用
#!/bin/bash
function fun1() {
echo “I like westos”
}
fun1 ##调用函数
3. 引用
注意:每次引用函数时,bash会重新回到函数的定义
[root@server ~]# cat function.sh
#!/bin/bash
function fun1() {
echo "I am a boy~"
}
count=1
while [ $count -le 5 ]
do
fun1
count=$[ $count + 1 ]
done
echo "End of loop"
fun1
echo "End of script"
[root@server ~]# sh function.sh
I am a boy~
I am a boy~
I am a boy~
I am a boy~
I am a boy~
End of loop
I am a boy~
End of script
4. 返回值
1)默认退出状态码:默认情况下,函数的退出状态码是函数中最后一条命令返回的退出状态码
2)使用return命令
shell使用return命令来退出函数并返回特定的退出状态码
[root@server ~]# cat return.sh
#!/bin/bash
function db1() {
read -p "Enter a value:" value
echo "doubling the value..."
return $[ $value * 2 ]
}
db1
echo "The new value is $?"
[root@server ~]# sh return.sh
Enter a value:6
doubling the value...
The new value is 12
函数名必须是唯一的,如果重新定义了函数,新的函数会覆盖旧的函数
函数不能直接从命令行获取脚本的参数值
将函数的输出保存在shell变量中,可以获得任何类型的函数输出,并将其保存到变量中
可以向函数中传递参数函数名会在$0变量中定义,函数命令行上的任何参数都会通过$1, #来判断传给函数的参数数目
5.全局变量与局部变量
全局变量: 任何地方都生效的变量,默认情况下,脚本主体内定义全局变量,函数内可以用,函数外也可以用
[root@server ~]# vim overall.sh
#!/bin/bash
function fun1() {
temp=$[ $value + 5 ]
result=$[ $temp * 2 ]
}
temp=4
value=6
fun1
echo "The result is $result"
if [ $temp -gt $value ];then
echo "temp is larger"
else
echo "temp is smaller"
fi
[root@server ~]# sh overall.sh
The result is 22
temp is larger
局部变量定义方法: local value
[root@server ~]# vim local.sh
#!/bin/bash
function fun1() {
local temp=$[ $value + 5 ]
result=$[ $temp * 2 ]
}
temp=4
value=6
fun1
echo "The result is $result"
if [ $temp -gt $value ];then
echo "temp is larger"
else
echo "temp is smaller"
fi
[root@server ~]# sh local.sh
The result is 22
temp is smaller