我已经看过了,但是找不到任何描述以下文件描述符语法如何工作的细节的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
,因为重定向是对命令进行的,而不是跟在后面。