免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2003 | 回复: 3

[文本处理] 管道与重定向read后,变量异常 [复制链接]

论坛徽章:
0
发表于 2012-07-20 10:56 |显示全部楼层
本帖最后由 ran3guns 于 2012-07-20 11:02 编辑

这个脚本参数为一个文件名, 功能是输出文件的行数。
问题: cat file | 把数据传递给read的时候, 最后的行数变量i失效了。
           < file 这种重定向的方式read的时候,变量就没有失效。

           那位能解释下,不胜感激。
测试数据:
text.txt 文件内容为 1
运行脚本后输出:
  1. cat ... finished->
  2. < file ... finished->1
复制代码
  1. #!/bin/bash

  2. cat "$1" |
  3. while read LINES
  4. do
  5.         i=$(($i+1))
  6. #        echo $i
  7. done
  8. echo "cat ... finished->$i"
  9. # 这里i应该是文件 $1的行数, 但是实际输出为 空

  10. while read LINES
  11. do
  12.         j=$(($j+1))
  13. #        echo $j
  14. done < "$1"
  15. echo "< file ... finished->$j"
  16. #这里j的输出就正常了。
复制代码

论坛徽章:
0
发表于 2012-07-20 11:02 |显示全部楼层
管道产生了子进程

论坛徽章:
0
发表于 2012-07-20 11:09 |显示全部楼层
回复 2# jiejie455


    却是是这样的, 感谢!
另请教 把数据从子进程返回给父进程有哪些方法(不考虑文件)?

论坛徽章:
3
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:51:162015年亚洲杯之阿曼
日期:2015-04-07 20:00:59
发表于 2012-07-20 13:28 |显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP