【问题标题】:How to write to a named file descriptor in Bash?如何在 Bash 中写入命名文件描述符?
【发布时间】:2014-10-28 11:48:05
【问题描述】:

我创建了一个命名文件描述符{out}

$ exec {out}>out

但是当我尝试写入指定的文件描述符时,会使用文件描述符的名称创建一个新文件:

$ 回声 >&{out} $查找。 -name {out} 。/{出去}

Bash manual 说:

每个可能以文件描述符编号开头的重定向都可能以 {varname} 形式的单词开头。

如果我用数字代替它,它工作正常:

$ 执行 3>out $回声测试>&3 $猫出去 测试

如何对命名的文件描述符做同样的事情?

【问题讨论】:

    标签: bash file-descriptor


    【解决方案1】:

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

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

    在您的示例中,文件 {out}

    创建
    echo >&{out}
    

    不是最初的exec,其重定向创建了文件out,将分配的文件描述符存储在变量out中。

    【讨论】:

      【解决方案2】:

      echo test >&${out}

      如果您使用exec {out}>out,那么$out 会为您提供 fd 编号。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-12-01
        • 1970-01-01
        • 2019-06-20
        • 1970-01-01
        • 1970-01-01
        • 2012-05-12
        • 2010-09-20
        相关资源
        最近更新 更多