LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 612|回复: 3

◆ [问题]一个shell的小问题

[复制链接]
发表于 2005-3-22 20:27:58 | 显示全部楼层 |阅读模式
自己练习个小程序
其中有
grep sam /etc/passwd | read line
发现line里是空的
有测试了一下,写了叫try2

i=1
grep $1 /etc/passwd | while read line
do
        echo $i
        i=$((i+1))
        echo $line
done

这时
./try  sam就会有

1
sam:x:1006:100::/home/sam:/bin/bash

也就是第一次就读了进去,line就有值了,不知道这是什么缘故,多谢指点。
发表于 2005-3-22 20:47:16 | 显示全部楼层
实际上line在外面好象还是没有值,看下面:
  1. zhyfly: ~/2$ cat try
  2. #!/bin/bash
  3. i=1
  4. grep $1 /etc/passwd|while read line
  5. do
  6. echo $i
  7. i=$(($i+1))
  8. echo $i
  9. echo $line
  10. done
  11. echo $line
  12. echo $i
  13. zhyfly: ~/2$ ./try zhyfly
  14. 1
  15. 2
  16. zhyfly:x:1000:1000:zhyfly,,,:/home/zhyfly:/bin/bash

  17. 1
  18. zhyfly: ~/2$

复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-3-22 22:55:10 | 显示全部楼层
在外面没有我知道原因,while要读两遍,第一遍的返回值是0,第二次不是,遇到了文件结束符一类的东西,while内部就不运行了,但read line 运行了,只是一个空值。
回复 支持 反对

使用道具 举报

发表于 2005-3-22 23:23:25 | 显示全部楼层
那就应该是对的了!
回复 支持 反对

使用道具 举报

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

本版积分规则

快速回复 返回顶部 返回列表