免费注册 查看新帖 |

Chinaunix

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

[文本处理] 新人求指导 一道简单的输入输出问题~ [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-08-06 21:43 |只看该作者 |倒序浏览
本帖最后由 1075482900 于 2014-08-06 21:46 编辑

我想试一下书中的函数里用echo输出然后函数外用个变量接收他,可感觉结果好诡异。

代码如下:
   #
   #! /bin/sh
   function fact()
   {
       local n="$1"
       if [ "$n" -eq 0 ]
       then
           result=1
       else
           m=$[ n-1 ]
           fact "$m"
           result=$n
       fi
       echo $result
   }
   k=$(fact $1)
   echo "最大的数字是$k"


输出如下:
dell@ubuntu:~/workspace$ ./a.sh 5
最大的数字是1
1
2
3
4
5

然后我就晕了,他不应该是先输出1 2 3 4 5 然后在将最后一个5赋给k吗?怎么k会等于1呢?k不是应该等于5吗?
是linux的输出机制和c不一样吗?
各位前辈求教啊?

论坛徽章:
0
2 [报告]
发表于 2014-08-06 21:45 |只看该作者
那个”阶乘是1“  大家自动脑补成“最大的数字是1” 哈。。。复制粘贴的时候出了点问题。。。

论坛徽章:
3
天蝎座
日期:2013-12-10 19:37:11酉鸡
日期:2014-08-04 20:05:38双鱼座
日期:2014-08-09 21:53:54
3 [报告]
发表于 2014-08-06 22:37 |只看该作者
本帖最后由 欧阳西风 于 2014-08-06 22:38 编辑

回复 1# 1075482900


    你是将函数中的echo输出整个都赋给了k,所以k就是函数的整个输出啊,也就是说k实际上是以下值
"
1
1
2
3
4
5
"
为了说明上面是一整个字符串,我在其上下两行加了引号。

论坛徽章:
0
4 [报告]
发表于 2014-08-07 09:25 |只看该作者
回复 3# 欧阳西风
懂了  谢谢  {:3_182:}

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

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP