码迷,mamicode.com
首页 > 系统相关 > 详细

shell——read -u

时间:2017-02-19 00:14:50      阅读:193      评论:0      收藏:0      [点我收藏+]

标签:行数据   color   grid   htm   code   logs   www   read   写法   

转自:https://zhidao.baidu.com/question/357781350.html

while read -u3 i && read -u4 j;do 
echo $i $j 
done 3<afile 4<bfile
read -u3 i 的意思是从 3 号 fd (file descriptor,文件描述符) 中读一行数据到 i 变量中, 同理你明白 read -u4 j 的意思

而 3<afile 的意思是重定向 afile 到 3 号 fd 中, 同理你明白 4<bfile

所以,整个代码
while read -u3 i && read -u4 j;do
echo $i $j
done 3<afile 4<bfile
的意思是,不断从 afile 和 bfile 中分别读取内容到i , j 中,然后用
echo 打印出来。 这个循环会一直执行直到遇到 afile 或 bfile 中至少任意一个的文件尾。

比方说你 afile 的内容是
a
b
c

bfile 的内容是
1
2
3
4

则这段程序就会打印
a 1
b 2
c 3

追问
为什么可以写成这样3<afile ,而不是exec 3<afile,而且不写在循环的前面呢?
 
追答
用现在的写法,相当于只对 while 语句进行重定向,while结束后,3,4 就没有了。 如果在 while 前面用 exec 3<afile  4<bfile 了话,从 exec 之后直到脚本结束,重定向的3,4都一直存在。

所以对于你的代码来说,既然只在 while 中需要用 afile bfile,那现在的写法就是最好的。 如果想在 while 后继续访问,那么可以考虑用 exec 3<afile 的方式。

shell——read -u

标签:行数据   color   grid   htm   code   logs   www   read   写法   

原文地址:http://www.cnblogs.com/maxgongzuo/p/6414474.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!