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"
这是一个很简单的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,我去,所以,当函数调用之后,赶紧找个变量将其保存,要不然,嘿嘿