shell里的函数返回值

这几天用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


相关文章

分类

留言:

关于文章

This page contains a single entry by DongHao published on 10 18, 2011 1:20 PM.

十一图趣 was the previous entry in this blog.

dd命令的新了解 is the next entry in this blog.

Find recent content on the main index or look in the 存档 to find all content.