传参 $1,$2
变量 local
返回值 return $?
一、定义函数
方法一:
函数名() {
函数要实现的功能代码
}
方法二:
function 函数名 {
函数要实现的功能代码
}
二、调用函数
函数名
函数名 参数 1 参数 2
#!/bin/bash
fac(){
factor=1
for((i=1;i<=$1;i++)) #这里的$1是函数的参数,不是脚本传过来的参数
do
factor=$[$factor * $i]
done
echo $factor
}
fac 5 #如果这里写$1 那么这里就可以实现脚本与函数的互动
#!/bin/bash
func2(){
read -p "enter num :" num
return $[2*num]
}
func2
echo "func2 return value : $?"
案例1 函数传参 位置参数
#!/bin/bash
if [ $# -ne 3 ];then
echo "usage : `basename $0`" par1 par2 par3
exit
fi
fun3(){
echo "$(($1 * $2 * $3))"
}
result=`fun3 $1 $2 $3`
echo "result is : $result"
案例2 函数参数 数组参数
#!/bin/bash
num=(1 2 3 4)
array(){
local fac=1 #局部变量
for i in $*
do
fac=$[fac * $i]
done
echo "$fac"
}
array ${num[*]} #数组的所有元素
案例2 函数返回 输出数组变量
#!/bin/bash
num=(1 2 3)
num2=(2 3 4)
array(){
local newarray=($*) #生成一个新的数组
local i
for((i=0;i<$#;i++))
do
newarray[$i]=$(( ${newarray[$i]} * 5 ))
done
echo "${newarray[*]}"
}
result=`array ${num[*]}`
echo ${result[*]}