2014-10-28 230 views
5

我创建了一个名为文件描述符{out}如何写入Bash中的命名文件描述符?

 
$ exec {out}>out 

但是当我尝试写一个新的文件获取与文件描述符的名称创建命名文件描述:

 
$ echo >&{out} 
$ find . -name {out} 
./{out} 

的Bash manual说:

每个可能在文件描述符编号之前的重定向可能会在第一个字的前面e表单{varname}。

如果我以数字做它,而不是它工作正常:

 
$ exec 3>out 
$ echo test >&3 
$ cat out 
test 

如何做同样的一个名为文件描述符?

回答

7

大括号内的字符串只是shell为您设置的变量的名称,其值是shell分配的文件描述符。大括号不是名称的一部分。为了使用它,只需在适当的上下文中展开该变量即可。

$ exec {out}>out 
$ echo foobar >&$out 
$ cat out 
foobar 

在您的例子,该文件{out}

echo >&{out} 

创建不是初始exec其重定向创建的存储分配的文件描述符的变量out文件out

1

echo test >&${out}

如果你这样做exec {out}>out,然后$out给你FD数。

相关问题