关于关闭文件描述符的语法混乱

关于关闭文件描述符的语法混乱

我发现关闭文件描述符的语法大多令人困惑。举个例子:n>&-,我正在关闭一个名为 n 的文件描述符,我是对的吗?

但我知道,如果我想将某些内容重定向到另一个文件描述符,我必须这样做n>&1,因此&仅当使用 或其他重定向命令时,才将 用作文件描述符的标记>,而且这应该是正确的,对吧?

此外,-符号可用于重定向自/至stdinstdout重定向至:cat -

那么考虑到上述规则,为什么n>&-要关闭文件描述符呢?这似乎是重定向到stdin...

PS:供我使用过的参考http://tldp.org/LDP/abs/html/io-redirection.htmlhttp://tldp.org/LDP/abs/html/special-chars.html

答案1

有规则,也有例外。

man bash | grep -C 3 '&-'
       Each redirection that may be preceded by a file descriptor  number  may
       instead be preceded by a word of the form {varname}.  In this case, for
       each redirection operator except >&- and <&-, the shell will allocate a
       file  descriptor  greater than or equal to 10 and assign it to varname.
       If >&- or <&- is preceded by {varname}, the value  of  varname  defines
       the file descriptor to close.

相关内容