首页 > 代码库 > shell——read -u
shell——read -u
转自: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
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。