LinuxSir.cn,穿越时空的Linuxsir!

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

请教一个关于while循环的问题。

[复制链接]
发表于 2006-4-13 10:01:22 | 显示全部楼层 |阅读模式
例如有文件name.txt内容为
abc
def
ghi

文件 whileread 内容为

#!/bin/bash
#whileread
while read LINE
do
echo $LINE
done < name.txt

此时,脚本会将name.txt里的内容循环打印出来,但是如果将其改成

#!/bin/bash
#whileread
while read LINE < name.txt
do
echo $LINE
done

则是死循环,为何?为何写在最后就是成功读取?第一个脚本不是先执行到read LINE 吗?不应该先等待一个输入吗?
发表于 2006-4-13 20:10:38 | 显示全部楼层
我不知道是为什么,但从来没见人像你这样写过。都是done < name.txt这样呀!
回复 支持 反对

使用道具 举报

发表于 2006-4-13 22:17:55 | 显示全部楼层
read line <name.txt

无论你怎么循环,line变量总是name.txt的第一行
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-4-14 19:58:40 | 显示全部楼层
能不能再深入点说说,例如它们的执行顺序。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-4-14 21:15:27 | 显示全部楼层
有没有另外一个脚本可以模拟显示这个脚本的运行过程?
回复 支持 反对

使用道具 举报

发表于 2006-4-14 21:56:33 | 显示全部楼层
set -x
后运行你的命令。

或者 bash -x 脚本文件
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-4-14 23:53:24 | 显示全部楼层
Post by 终极幻想
set -x
后运行你的命令。

或者 bash -x 脚本文件

多谢幻想兄。但是为什么
while read LINE
do
echo $LINE
done < name.txt

可以读取下一行的字符串?是不是和<有关?
回复 支持 反对

使用道具 举报

发表于 2006-4-15 00:11:11 | 显示全部楼层
while ... done 是一个语句,所以 < xxx 应该放到最后。。。我的看法。
回复 支持 反对

使用道具 举报

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

本版积分规则

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