我读到过(例如:How do file descriptors work?),要使用文件描述符3-9,我需要先打开它们。尝试在不使用它的情况下使用它们会产生错误:
function f()
{
echo hi 1>&3
}
f
输出:
bash: 3: Bad file descriptor
但是,如果我在调用函数时将其重定向,一切似乎都很正常:
f 3>&1
输出:
hi
那么,我是否需要打开文件描述符?
发布于 2020-08-27 19:03:44
是的,您确实需要打开一个新的文件描述符,并且作为一个好的实践,您应该像这样在结束时关闭它:
f() {
# open fd=3 redirecting to 1 (stdout)
exec 3>&1
# redirect stdout to fd=3
echo hi >&3
# close fd=3
exec 3>&-
}
请注意,当您在调用函数的同时运行f 3>&1
时,实际上是通过将文件描述符3
重定向到&1
(标准输出)来打开它。
https://stackoverflow.com/questions/63614488
复制相似问题