当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 3 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 请教函数的返回值问题
帖子发表于 : 2009-10-29 18:50 

注册: 2009-08-20 10:45
帖子: 8
送出感谢: 0 次
接收感谢: 0 次
函数如下,每次调用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,哪里出错了呢,急啊


页首
 用户资料  
 
2 楼 
 文章标题 : Re: 请教函数的返回值问题
帖子发表于 : 2009-10-29 23:44 
头像

注册: 2006-08-24 21:25
帖子: 256
送出感谢: 0 次
接收感谢: 0 次
没出错阿,你程序都正确运行了,当然返回的$?为0阿。你搞错概念了。$? 不是这样用的

$?是保存了最后所执行的命令的退出状态码.而不是函数的返回值,你的命令都正确运行了,当然返回0


如你乱打个命令
代码:
sdsafdf
echo $?

那就不是0了

或者直接
代码:
!:
echo $?

这样返回的是1

或者是退出时指定,如
代码:
exit 64


还有好像你的函数也写错了,不知道你函数里的省略号是,瞎说下。在函数里,函数的参数不管是什么都该用$1表示第一个参数,而不是直接调用外部变量名。


页首
 用户资料  
 
3 楼 
 文章标题 : Re: 请教函数的返回值问题
帖子发表于 : 2009-11-02 11:38 

注册: 2009-08-20 10:45
帖子: 8
送出感谢: 0 次
接收感谢: 0 次
谢谢楼上的朋友,这个问题我已经搞好了。

是这样的,一开始我想用$?来取函数的返回值,总是有问题,这种方式不好,容易出错,现在改成把结果赋值给全局变量,这样更清晰一点。

上面的脚本中if [ "$Status" = 0 && "$Record" = 2 ]里需要把=号改为==
还有case里不能有break,我又在case外层加了个while,然后在case里才可以用break
如果case里不用break的话,当某一个case匹配时,会顺序执行下面的命令行,所以结果也会有问题


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 3 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 4 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译