1.函数
- 传参:$1,$2
- 变量:local
- 返回值:return $?
- 作用:
(1)完成特定功能的代码片段(块)
(2)在shell中定义函数可使得代码模块化,便于复用代码
(3)函数必须先定义才可以使用
2.定义函数
函数名()
{
函数要实现的功能代码
}
function 函数名
{
函数要实现的功能代码
}
factorial()
{
factorial=1
for((i=1;i<=10;i++))
do
factorial=$[$factorial * $i]
done
echo "10的阶乘:$factorial"
}
factorial
-------------------------------------------------------------------------
factorial()
{
factorial=1
for((i=1;i<=$num;i++))
do
factorial=$[$factorial * $i]
done
echo "10的阶乘:$factorial"
}
num=5
factorial
-------------------------------------------------------------------------
factorial()
{
factorial=1
for((i=1;i<=$1;i++))
do
factorial=$[$factorial * $i]
done
echo "10的阶乘:$factorial"
}
factorial 10//这个10会直接传递给函数factorial()的$1,直接执行./factorial.sh
factorial()
{
factorial=1
for((i=1;i<=$1;i++))
do
factorial=$[$factorial * $i]
done
echo "10的阶乘:$factorial"
}
factorial $1
-------------------------------------------------------------------------
factorial()
{
factorial=1
for((i=1;i<=$1;i++))
do
factorial=$[$factorial * $i]
done
echo "10的阶乘:$factorial"
}
factorial $1
factorial $2
factorial $3
-------------------------------------------------------------------------
使用let和shell的for循环
factorial()
{
factorial=1
for i in 'seq $1'
do
let factorial=$factorial*$i
done
echo "10的阶乘:$factorial"
}
factorial $1
3.函数的返回值
- 函数的返回值:函数最后一条命令的执行结果,要么0,要么非0,但是可利用return自定义返回结果,但是不能超过255
- 程序的返回值:程序最后一条命令的执行结果
- return只能返回0-255的数
fun2()
{
read -p "enter num:" num
let 2*$num
}
fun2
echo "fun2 return value: $?"
}
-------------------------------------------------------------------------
fun2()
{
read -p "enter num:" num
return $(2*$num)
}
fun2
echo "fun2 return value: $?"
-------------------------------------------------------------------------
fun2()
{
read -p "enter num:" num
echo $(2*$num)
}
result='fun2'
echo "fun2 return value: $?"