Bash本地文件描述符如何工作?

时间:2013-05-01 07:02:08

标签: bash file-io file-descriptor

我看过但找不到任何描述以下文件描述符语法如何工作的详细信息的Bash指南:

while read line <&3; do
    echo $line
done 3<file.txt

这是一个特殊的while循环结构,允许Bash为文件描述符源done提供支持吗?是一种做exec电话的简写吗?

1 个答案:

答案 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

因为重命名已完成 命令,而不是跟随