我看过但找不到任何描述以下文件描述符语法如何工作的详细信息的Bash指南:
while read line <&3; do
echo $line
done 3<file.txt
这是一个特殊的while循环结构,允许Bash为文件描述符源done
提供支持吗?是一种做exec电话的简写吗?
答案 0 :(得分:5)
除了整个重定向事物是一个完全出色的概念之外,没有什么特别之处。
<&3
只是告诉read
从文件句柄3获取输入,而3<file.txt
只是为相关命令集设置文件句柄3,这是整个{{1}循环。
您可以在while
下的bash
手册页中阅读。
您还可以使用我更喜欢的REDIRECTION
文件desriptor表单,因为它允许我在标准输入和循环内的额外文件句柄中获取
而且,如果你想某种方式,在设置之前使用文件句柄3,那不是这样。 read -u 3
适用于整个3<file.txt
循环,请将其视为:
while..done
从这个意义上讲,它与:
没有什么不同(
while read line <&3; do
echo $line
done
) 3<file.txt
因为重命名已完成 命令,而不是跟随。