我有一个来自 fd3 的输出,我正在重定向到一个文件:
程序 3>输出.log
在这种情况下,我只需要将程序提供的第一行写入日志,并且不想在程序的生命周期内保持对此文件的写入句柄打开。
如何只读第一行?我想我可以read
使用 shell 命令,但我不知道如何将它用于 stdout 以外的任何事情。请注意,我不想将 fd3 重定向到 stdout 然后使用read
,因为我正在将 stdout 捕获到另一个日志。
您可以通过以下方式捕获任意文件描述符的第一行:
$ (printf '%sn' foo bar >&3) 3> >(head -n1)
foo
这会将两行打印到 FD 3 并将其重定向到head
的标准输入。如果要将该结果存储到文件中,只需在进程替换中重定向即可。