Chinaunix

标题: 管道与重定向read后,变量异常 [打印本页]

作者: ran3guns    时间: 2012-07-20 10:56
标题: 管道与重定向read后,变量异常
本帖最后由 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的输出就正常了。
复制代码

作者: jiejie455    时间: 2012-07-20 11:02
管道产生了子进程
作者: ran3guns    时间: 2012-07-20 11:09
回复 2# jiejie455


    却是是这样的, 感谢!
另请教 把数据从子进程返回给父进程有哪些方法(不考虑文件)?
作者: zooyo    时间: 2012-07-20 13:28
提示: 作者被禁止或删除 内容自动屏蔽




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2