shell函数的参数与返回值的例子

#!/bin/bash
Abigger=1
Bbigger=2
Equal=3
bigger()
{
        if [ $1 -eq $2 ]
        then
                return $Equal                   #返回值是return,不能用exit,如果用exit将在这里退出
        elif [ $1 -gt $2 ]
        then
                return $Abigger
        else
                return $Bbigger
        fi
}
bigger 35 34
case $? in           # $?是上条指令执行的状态,就是调用函数的返回值。           
"1")
        echo "A is bigger";;
"2")
        echo "B is bigger";;
"3")
        echo "two number is equal";;
*)
        echo "error"

esac 

注意在调用函数和使用变量之间不能有其他命令,否则$?就会被改变成最新一条命令的返回值。

想要返回字符串或可以使用一个函数之外定义的变量或数组来传递返回结果。修改之后的脚本如下:

#!/bin/bash
RESULT=null
bigger()
{
        if [ $1 -eq $2 ]
        then
                RESULT="equal"
        elif [ $1 -gt $2 ]
        then
                RESULT="A is bigger"
        else
                RESULT="B is bigger"
        fi
}
bigger 35 34
echo "the result is : $RESULT"

利用echo模拟函数返回值:

#!/bin/bash
multi()
{
        local temp           #局部变量,只在multi函数里面有用
        let temp=$1*$2
        echo $temp        #不会打印到标准输出,因为调用时会作为变量的值。可返回数字字符串等类型。
}
result=`multi 15 5`      #命令替换(command substitution)
echo "15 * 5 = $result"
exit 0



函数的变量作用范围:

函数外定义的变量,函数内可以使用和修改,修改会影响到函数外;
函数内定义的变量(没有使用loacal),函数外可以使用和修改,修改会影响到函数外。在函数未被调用之前,函数体内定义的变量在函数之外不能被看见。

#!/bin/bash
func()
{
        nomal_var=33
        local local_var=99     #以local声明的局部变量,只能在函数内可见
        echo "local_var inside the function,local_var=$local_var"
}
echo "without calling the function,nomal_var=$nomal_var"   #函数未被调用,nomal_var=
echo "call func"
func
echo "after calling the function,nomal_var=$nomal_var"   #函数调用之后变量可见,nomal_var=33
echo "local_var outside the function, local_var=$local_var"   # local_var=

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值