[b][size=xx-small]shell种的函数[/size][/b]
函数有两个优势:
[i][color=red]
1. 将处理相同事情的一系列的调用的统一,代码利用率高,
2. 复杂的功能和模块拆分,便于代码的可读性[/color][/i]
运行命令sh function.sh 1 2 后的结果
函数中参数的传递
具体的脚本
执行后的结果
函数有两个优势:
[i][color=red]
1. 将处理相同事情的一系列的调用的统一,代码利用率高,
2. 复杂的功能和模块拆分,便于代码的可读性[/color][/i]
#简单函数1
function1(){
echo "function1"
}
#简单函数2
function function2(){
echo "function function2"
}
#记得加上,要不然就是注释了
function1
function2
#带返回值的函数
returnFunction(){
return `expr $1 + $2`
}
returnFunction $1 $2
rv=$?
echo "reture value is $rv"
#在来一个大家都用的例子
funWithReturn(){
echo "get sum value of two number"
echo -n "input first number:"
read num1
echo -n "input second number"
read num2
echo "your input numbers are $num1 and $num2"
return "$(($num1+$num2))"
}
funWithReturn
rv=$?
echo "function funWithReturn return $rv"
#函数之间的调用
call_f(){
echo "this is function1"
call_f2
}
call_f2(){
echo "this is function2"
}
call_f
#删除方法
unset -f call_f2
call_f
运行命令sh function.sh 1 2 后的结果
function1
function function2
reture value is 3
get sum value of two number
input first number:3
input second number3
your input numbers are 3 and 3
function funWithReturn return 6
this is function1
this is function2
this is function1
function.sh: line 44: call_f2: command not found
函数中参数的传递
$# 传递给函数的参数个数。
$* 显示所有传递给函数的参数。
$@ 与$*相同,但是略有区别,在某些操作中该操作会拆分
$? 函数的返回值。
具体的脚本
#函数中传递参数
funWithParam(){
echo "paragram 1 $1"
echo "paragram 2 $2"
echo "paragram 3 $3"
echo "paragram 4 $4"
echo "paragram 5 $5"
echo "paragram number $#"
echo "paragram all $@"
}
funWithParam 1 2 3 4 5 6 7
执行后的结果
paragram 1 1
paragram 2 2
paragram 3 3
paragram 4 4
paragram 5 5
paragram number 7
paragram all 1 2 3 4 5 6 7