我有来自fd3的输出,该输出是我正在将其重定向到这样的文件的程序:
程序3> output.log
在这种情况下,我只需要将程序提供的第一行写入日志,并且不想在程序的整个生命周期中都保持对该文件的写句柄打开。
我如何只读取第一行?我想我可以使用shell命令read
,但除了标准输出以外,我不知道如何使用它。请注意,当我将stdout捕获到另一个日志时,我不想将fd3重定向到stdout然后使用read
。
答案 0 :(得分:0)
您可以通过以下方式捕获任意文件描述符的第一行:
$ (printf '%s\n' foo bar >&3) 3> >(head -n1)
foo
这将两行打印到FD 3,并将其重定向到标准输入head
。如果要将结果存储到文件中,只需在process substitution内重定向。