免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 4923 | 回复: 10
打印 上一主题 下一主题

请教关于函数返回值的问题 [复制链接]

论坛徽章:
0
1 [报告]
发表于 2005-08-29 22:41 |显示全部楼层

请教关于函数返回值的问题

  1. b ()
  2. {
  3. if (( $1 <3 )); then
  4.     #需要函数b返回一个值99,同时退出
  5.     return 99
  6.      exit
  7. fi
  8.   
  9. if (( $1 < 6  ));then
  10.    a $1
  11.    #需要函数b返回一个值0
  12.    return 0
  13. fi
  14. }
复制代码

论坛徽章:
0
2 [报告]
发表于 2005-08-30 09:07 |显示全部楼层

请教关于函数返回值的问题

原帖由 "網中人" 发表:


這個 exit 不會被執行, 因為 return 一跑, function 就結束了.


谢谢  

论坛徽章:
0
3 [报告]
发表于 2005-08-30 09:10 |显示全部楼层

请教关于函数返回值的问题

原帖由 "ohwww" 发表:

因为a执行过程后会显示很多东西,这些就是a的执行结果。我用$?确实可以取得a的返回值,不过只是表示a执行成功的0,不能达到我的目的。因为任何情况下我调用a都能执行成功,不过根据参数的不同,a的执行结果不一样而..........


本来是挺简单的问题  看下是否是如下所示

  1. #!/bin/sh

  2. a() {

  3. if [ $1 -eq 2 ]; then
  4.    echo "1
  5. 1 2"
  6.          
  7. elif [ $1 -eq 3 ]; then
  8.    echo "1
  9. 1 2
  10. 1 2 3"
  11. fi

  12. }

  13. b() {

  14. if [ $1 -eq 2 ]; then
  15. a $1
  16. return 99
  17. elif [ $1 -eq 3 ]; then
  18. a $1
  19. return 0
  20. fi
  21. }

  22. b 3
  23. echo $?
复制代码


执行结果

  1. 1
  2. 1 2
  3. 1 2 3
  4. 0
复制代码

论坛徽章:
0
4 [报告]
发表于 2005-08-30 09:22 |显示全部楼层

请教关于函数返回值的问题

原帖由 "waker" 发表:
不过根据参数的不同,a的执行结果不一样而已.......
干嘛不通过参数不同返回不同的值而非要根据结果 ?


4242 如果a的执行结果很多 是不好判断 可以根据参数的不同 可是如果a出现参数不同而执行结果相同的情况怎么办 虽然觉得他这不会出现这个情况

论坛徽章:
0
5 [报告]
发表于 2005-08-30 09:32 |显示全部楼层

请教关于函数返回值的问题

原帖由 "ohwww" 发表:


的确如此,不过
b  #不管这儿的参数是什么
echo $?  #这个语句的结果总是0,没法达到判断的目的

  1. ......

  2. b() {
  3. if [ $1 -eq 2 ]; then
  4. a $1
  5. return 99
  6. elif [ $1 -eq 3 ]; then
  7. a $1
  8. return 0
  9. fi
  10. }
  11. b 2
  12. echo $?
复制代码


执行结果
  1. 1
  2. 1 2
  3. 99
复制代码

论坛徽章:
0
6 [报告]
发表于 2005-08-30 09:38 |显示全部楼层

请教关于函数返回值的问题

原帖由 "ohwww" 发表:


问题就在这儿,对于a来说有时候参数虽然不同,执行结果倒是相同的,所以不能根据参数来判断。


是不同 可是是不是也需要一个判断标准
即使是 `a 2` 为 1 1 2   `a 3` 为 1 1 2 1 2 3  也是可以判断的  你判断他们不同的标准是什么  也就是`a $1`在什么情况下b返回什么

论坛徽章:
0
7 [报告]
发表于 2005-08-30 09:52 |显示全部楼层

请教关于函数返回值的问题

原帖由 "ohwww" 发表:


实际a的执行结果并不是数字,我是为了说明简单才这样举例子的。
总之,我就是想即让a的执行结果和显示不受影响,又想从调用a的b取得一个数字型的返回值。


如果是这样 那给你的例子程序是不是已经达到了这个目的

论坛徽章:
0
8 [报告]
发表于 2005-08-30 10:03 |显示全部楼层

请教关于函数返回值的问题

原帖由 "ohwww" 发表:


实际的执行结果会是这样的
1 1 2 99

如你所说,通过return语句我可以得到99这样的返回值,但是我没法修改a函数,所以他们最后的显示情况是如上面那样的格式,不能单把99取到


我这里的执行结果 是:
1         |
1 2      |       这一部分是你所说的"不影响a的输出"  right?
99               这一部分是函数b的返回值            right?

你要怎么"单把99取到"   如果只返回99  违背了你不影响a的输出的前提

如果是
1
1 2
99         又要"单把99 取到"   

你到底要怎样的输出?!

论坛徽章:
0
9 [报告]
发表于 2005-08-30 10:05 |显示全部楼层

请教关于函数返回值的问题

原帖由 "ohwww" 发表:


快达到了,剩下的问题是怎么仅仅把return的这个值取到一个变量中,而且不需要它也显示出来。


  1. ......

  2. b() {
  3. if [ $1 -eq 2 ]; then
  4. a $1
  5. return 99
  6. elif [ $1 -eq 3 ]; then
  7. a $1
  8. return 0
  9. fi
  10. }
  11. b 2
  12. bianliang=$?
复制代码


ok?

论坛徽章:
0
10 [报告]
发表于 2005-08-30 10:12 |显示全部楼层

请教关于函数返回值的问题

[quote]原帖由 "ohwww"]同时呢我还需要把那个return的返回值取到一个变量中,因为我要用它。[/quote 发表:


您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP