函数如下,每次调用request后,按不同等条件测试,结果返回值都是0,请帮忙指正一下,多谢了~~~
function request () {
………
case "$REQUEST" in
QUERY )
if [ "$Status" = 0 && "$Record" = 2 ]
then
return $REQUEST_OK #0
else :
fi;
if [ "$Status" = 0 && "$Record" = 1 ]
then
return $REQUEST_NULL #10
else :
fi;
if [ "$Status" = 0 && "$Record" > 2 ]
then
return $(( "$Record" + 9 ))
else :
fi;
if [ "$Status" > 0 ]
then
return $Status
else :
fi;
break
;;
DELETE )
if [ "$Status" = 0 && "$DeleteRow" = 1 ]
then
return $REQUEST_OK #0
else :
fi;
if [ "$Status" = 0 && "$DeleteRow" = 0 ]
then
return $REQUEST_NULL 10
else :
fi;
if [ "$Status" = 0 && "$DeleteRow" > 1 ]
then
return $(( $DeleteRow + 10 ))
else :
fi;
if [ "$Status" > 0 ]
then
return $Status
else :
fi;
break
;;
* )
;;
esac
}
#调用
request "$QUERY"
if [ $? = 0 ]
在这里每次都是$?都=0,哪里出错了呢,急啊
请教函数的返回值问题
-
- 帖子: 8
- 注册时间: 2009-08-20 10:45
- xzap
- 帖子: 256
- 注册时间: 2006-08-24 21:25
-
- 帖子: 8
- 注册时间: 2009-08-20 10:45
Re: 请教函数的返回值问题
谢谢楼上的朋友,这个问题我已经搞好了。
是这样的,一开始我想用$?来取函数的返回值,总是有问题,这种方式不好,容易出错,现在改成把结果赋值给全局变量,这样更清晰一点。
上面的脚本中if [ "$Status" = 0 && "$Record" = 2 ]里需要把=号改为==
还有case里不能有break,我又在case外层加了个while,然后在case里才可以用break
如果case里不用break的话,当某一个case匹配时,会顺序执行下面的命令行,所以结果也会有问题
是这样的,一开始我想用$?来取函数的返回值,总是有问题,这种方式不好,容易出错,现在改成把结果赋值给全局变量,这样更清晰一点。
上面的脚本中if [ "$Status" = 0 && "$Record" = 2 ]里需要把=号改为==
还有case里不能有break,我又在case外层加了个while,然后在case里才可以用break
如果case里不用break的话,当某一个case匹配时,会顺序执行下面的命令行,所以结果也会有问题