如何只读取文件描述符输出的第一行?

时间:2018-09-29 10:49:14

标签: bash shell file-descriptor io-redirection

我有来自fd3的输出,该输出是我正在将其重定向到这样的文件的程序:

  

程序3> output.log

在这种情况下,我只需要将程序提供的第一行写入日志,并且不想在程序的整个生命周期中都保持对该文件的写句柄打开。

我如何只读取第一行?我想我可以使用shell命令read,但除了标准输出以外,我不知道如何使用它。请注意,当我将stdout捕获到另一个日志时,我不想将fd3重定向到stdout然后使用read

1 个答案:

答案 0 :(得分:0)

您可以通过以下方式捕获任意文件描述符的第一行:

$ (printf '%s\n' foo bar >&3) 3> >(head -n1)
foo

这将两行打印到FD 3,并将其重定向到标准输入head。如果要将结果存储到文件中,只需在process substitution内重定向。