【发布时间】:2017-12-05 12:34:24
【问题描述】:
我用ruby 编写了一个名为citeselect 的程序,它使用curses 从bibtex bibliogrpahy 中动态选择引用。我想将此程序放入管道中,以便使用该程序的输出轻松引用任何内容。不幸的是,正如我从
Ncurses and linux pipeline (c),
Curses 使用stdout 显示。
因此,当输出引用键作为输出提供时,我已将其路由到文件描述符 3。我已经验证它可以工作:citeselect 3>output
有什么方法可以在 bash 的单行中捕获发送到 fd3 的输出?类似echo "The citation key is $(citeselect 3>)"
谢谢。
【问题讨论】:
-
你已经接近了。
3>&1将文件描述符 3 复制到文件描述符 1(标准输出)。如果 curses 实际上写入标准输出(而不是直接写入终端),您还需要通过一些扭曲来避免捕获它。
标签: bash file-descriptor output-redirect