格式定义:
[ function ] funname [ () ]
{
aciton;
[return int;]
}
- function 关键词可省略
- 不带参数,无形参
- return 可省略,如省略,最后一条命令作为返回值
- return 返回的是int 型 0~ 255 之间的数值
- 函数返回值在调用函数之后通过
$?
来获得 - 函数内部特殊字符的意义:
- $# 传递到函数的参数个数
- $* 以一个单字符显示所有脚本传递的参数
- $$ 脚本运行的当前进程ID号
- $! 后台运行的最后一个进程的ID号
- $@ 与 $*相同,使用时加引号,并在引号中返回每个参数
- $-显示Shell使用的当前选项,与set 命令功能相同
- $? 显示命令的退出状态,0表示没有错误,其他任何值表示有错误
实例:
#函数定义,跟其他语言没差异
function demoFun () {
echo "My first shell function !"
}
#函数调用,没有带括号
demoFun
#不使用function的定义
demoFun1 () {
echo "define a function without keyword: function"
}
#函数调用
demoFun1
# 函数定义必须放在调用前
funWithReturn(){
echo "输入2个数字相加,请输入第一个数字:"
read n1
echo "输入2个数字相加,请输入第二个数字:"
read n2
echo "两个数字分别是$n1 和 $n2"
return $(($n1+$n2))
}
# 函数调用仅使用函数名称即可
funWithReturn
# a=funWithReturn 会返回:"funWithReturn",不能调用赋值
# a=$? # 可以这样引用函数结果并赋值给另一个变量
# echo "和:$a"
# 函数返回值在调用函数之后,通过 $? 来获取
echo "输入的2个数字之和为:$? " # $? 仅可以引用一次,不能被连续多次被引用