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



我已经看过了,但是找不到任何描述以下文件描述符语法如何工作的细节的Bash指南:

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

这是一个特殊的结构为while循环,允许Bash照看文件描述符源的done ?这是给高管打电话的简写吗?

除了整个重定向是一个非常棒的概念之外,它没有什么特别的。

<&3简单地告诉read从文件句柄3中获取输入,3<file.txt简单地为相关命令集设置文件句柄3,这是整个while循环。

您可以在REDIRECTION下的bash手册页中阅读它。

你也可以使用我喜欢的read -u 3的文件描述符形式,因为它允许我在中获得标准输入和循环中的额外文件句柄。

如果你认为文件句柄3是在设置之前使用的,那不是这样的。3<file.txt应用于整个while..done循环,可以这样考虑:

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

在这个意义上,它与:

没有什么不同。
sed 's/^/xx:/' <file.txt

,因为重定向是命令进行的,而不是跟在后面。

相关内容

  • 没有找到相关文章

最新更新