您的位置:首页 > 其它

关于while read只执行一次的问题

2011-08-02 13:25 267 查看
转自:http://bbs.chinaunix.net/viewthread.php?tid=769040&extra=&page=1

Q:下面的代码为何只执行了一次就退出了?

seq 10 >file

while read a

do

echo $a

dd &>/dev/null

done <file

A:因为重定向是针对整个while循环块的,而不只是read命令,read从输入读取了一行内容后,

其它的程序(比如 rsh或sed)从同样的地方把其它的输入读走了,read当然读不到其它内容了,

while也就结束了

修改成以下代码即可

exec 3<urfile

while read var <&3

do

....

done

原来的情况是 FD1 ===>read FD1 ===>sed

后来的情况是 FD3 ===>read FD1 ===>sed
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: