这几天用shell编程做一个简单的自动回归测试,需要用到shell的函数功能,大约是这样:
sum ()
{
return `expr $1 + $2`
}
sum 3 4
echo $? #result
一直用的不错,直到今天加了一个case,echo出来的返回值($?)就不对了,set -x调了一番,加法没错,但echo出来就是不对,最后暴力改改,让返回值变为直接 return 1024,咦?echo的东西变了,于是一番google,找到了这篇
原来shell里面函数的返回值是用的errno,而errno只支持0-255,所以如果返回值太大就返回的不对了。
替代方案是干脆用“全局变量”
RES=0
sum ()
{
RES=`expr $1 + $2`
}
sum 133 244
echo $RES
sum 333 444
echo $RES
转载请注明:爱开源 » shell里的函数返回值