免费注册 查看新帖 |

Chinaunix

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

awk 递归支持的如何? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-01-19 10:07 |显示全部楼层 |倒序浏览
大家可以先做了个测试,测试代码:
  1. ps -ef |awk '
  2. function listChilds(pPid){

  3.         print "listing ... " pPid ", " childs[pPid, 0];
  4.         if (childs[pPid, 0]) for (i = 0; i < childCount[pPid]; i++){
  5.        
  6.                 child = childs[pPid, i];
  7.                 print pPid": " child;
  8.                 print "--listChilds(" child ")";
  9.                 listChilds(child);
  10.         }
  11. }

  12. NR > 1 { childs[$3, childCount[$3]++] = $2; }
  13. END {
  14.         listChilds(pid);
  15. }
  16. ' pid=1
复制代码

论坛徽章:
0
2 [报告]
发表于 2007-01-19 10:09 |显示全部楼层
我这边部分输出
listing ... 1, 2
1: 2
--listChilds(2)
listing ... 2,
1: 3
--listChilds(3)
listing ... 3,
1: 4

中间正常结果省略 ... 然后

listing ... 6993,
4736: 6994
--listChilds(6994)
listing ... 6994,
1: 43
--listChilds(43)
listing ... 43,
1: 62
--listChilds(62)
listing ... 62,
1: 208
--listChilds(20
listing ... 208,
1: 330
--listChilds(330)

。。。后面是死递归输出

论坛徽章:
0
3 [报告]
发表于 2007-01-19 10:12 |显示全部楼层
我在 HP-UX 和 Linux 下面测试了,结果类似,暂时无法理解此现象。

论坛徽章:
0
4 [报告]
发表于 2007-01-19 10:16 |显示全部楼层
大家帮我试试看,如果有不同结果请告诉我 ^_^

论坛徽章:
0
5 [报告]
发表于 2007-01-19 10:20 |显示全部楼层
不然我就总结如下:
“对 awk 栈保护措施的质量有嫌疑”了,因为有时候还是好使得  

论坛徽章:
0
6 [报告]
发表于 2007-01-19 10:46 |显示全部楼层
i 用到之前都初始化。声明成局部的也一样,试过了。

btw,5楼总结有误。

论坛徽章:
0
7 [报告]
发表于 2007-01-19 11:08 |显示全部楼层
噢,这样声明会有效果:
for (local i; i < ....
我再试试看

论坛徽章:
0
8 [报告]
发表于 2007-01-19 11:09 |显示全部楼层
原帖由 Edengundam 于 2007-1-19 11:02 发表



这样声明我这里不死循环了...
如果不这样, i child 默认使用全局变量....:em11:
PS: 被你害得>_<工作总结才写了一句话......呜呜, 今天加班你要请我吃饭....hoho
[code]
function listChilds(pPi ...

好,就请你吃饭

论坛徽章:
0
9 [报告]
发表于 2007-01-19 11:25 |显示全部楼层
to 梦:
如果我在前面
local i;
然后 for (i=0; ... 也不行,递归还是死掉

to Eden:
child 也声明了,还没好使

目前问题还没解决,看到一点儿希望了

论坛徽章:
0
10 [报告]
发表于 2007-01-19 11:32 |显示全部楼层
不死,这样的结果是正常的,哈哈
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP