shell函数返回值不是$? !!!

shell函数返回值不是$? !!!

shell中美元符号的使用
找了半天原因,就在上篇博文里,我在用shell写素数时,发现了一个问题,老师所说的$?代表函数返回值的说法并不准确,所以查了一下,然后给用代码大家展示一下具体效果

$?
最后运行的命令的结束代码(返回值)

//函数调用之后执行了一条 echo
#!/bin/bash
f1()
{
    declare -i number=30
    if [ $1 -gt 2 ]
    then
        return $number
    else
        return $number
   fi
}
declare -i result=20
f1 $result
echo " after a echo"
result=$?
echo " first echo $result"
result=$?
echo " second echo $result"

上述代码效果展示,注意效果以及代码的13~16行
这是一个很简单的shell
一个函数,参数为 int类型,但是不管如何,都返回 30
"主函数"中调用了 f1之后马上一条 echo,显示“after a echo”,然后再取值result=$?
结果如图,result=0!!!!!

//after if
#!/bin/bash
f1()
{
    declare -i number=30
    if [ $1 -gt 2 ]
    then
        return $number
    else
        return $number
   fi
}
declare -i result=20
f1 $result
if [ $result -gt 5 ]
then
    result=$?
    echo " after if : $?"
fi
result=$?
echo " first echo $result"
result=$?
echo " second echo $result"

这段代码唯一改了的地方就是在函数调用之后 加了一句if,然后在 if(判断条件绝对为真)之后
result=$?
结果呢?
效果展示
还是0,我去,所以,当函数调用之后,赶紧找个变量将其保存,要不然,嘿嘿

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值