我发现关闭文件描述符的语法大多令人困惑。举个例子:n>&-
,我正在关闭一个名为 n 的文件描述符,我是对的吗?
但我知道,如果我想将某些内容重定向到另一个文件描述符,我必须这样做n>&1
,因此&
仅当使用 或其他重定向命令时,才将 用作文件描述符的标记>
,而且这应该是正确的,对吧?
此外,-
符号可用于重定向自/至stdin
或stdout
重定向至:cat -
那么考虑到上述规则,为什么n>&-
要关闭文件描述符呢?这似乎是重定向到stdin
...
PS:供我使用过的参考http://tldp.org/LDP/abs/html/io-redirection.html和http://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.