shell函数
死循环
whlie :
do
语句体
done
shell函数
- 什么时候用到函数
- 执行的功能类似
- 根据实际需求 ,进行设置
- shell函数定义格式
function 函数名()
{
}
- 调用shell函数
- 函数名
- 函数参数传递
function test()
{
echo "$0"
echo "$1"
echo "$2"
echo "${10}"
echo "hello worid"
}
test 1 2 3 4 5 6 7 8 9 34
- 分析:当参数作为shell函数传递时,当在函数里面接收n>=10个参数时,要加上${n};
- $0不是test,而是shell文件本身
- 函数里面的$1与函数外面的$1不相同,但是函数里面的$0与函数外面的$0相同
function sum()
{
num1=$1
num2=$2
let value=num1+num2
return $value
}
sum 1 2
echo "sum=$?"
sum 2 3
echo "sum=$?"
- 结果为: sum=3,sum=5
- 分析:函数如果是return出来的结果,我们用$?接收,$?是接收最后运行的一次脚本.
- 如果return后面的值>255,那么函数运行完之后用$?接收,$?=value%256
- 怎么接收return出来的值比255大?问题解决之道:使用echo返回出来,函数外使用变量接收,value=
函数名
,从而value进行操作- 实际上echo是临时保存函数的结果集
function test()
{
echo 513
}
value=`test`
echo "test函数的返回值${value}"
- shell函数总结:
- function函数可写可不写
- shell 函数可以有return,也可以没有return
- 如果是return出来的结果必须要用$?接收
- 如果是echo保存的结果集,必须要用value=
test
取结果接收- 函数里面可以嵌套,可以内嵌创建函数
a()
{
b()
{
}
b
}
a
a()
{
b()
{
echo "==b=="
}
b
}
a
a()
{
b()
{
echo "==b=="
}
}
a
b
6.条件函数
a()
{
value=9
if [ $value -eq 9 ]
then
b()
{
echo "==b=="
}
else
c()
{
echo "==c=="
}
}
a
b
- 结果为==b==
- 分析:函数b和函数c在什么情况下可以调用? 先运行函数a,因为a中有函数b和c的实现.在if条件成立时,实现函数b的定义,其他情况下,实现函数c的定义