Как прочитать только первую строку вывода из файлового дескриптора? - PullRequest
0 голосов
/ 29 сентября 2018

У меня есть вывод, поступающий из fd3 из программы, которую я перенаправляю в файл, как таковой:

программа 3> output.log

Inв этом случае мне нужна только первая строка, предоставленная программой, для записи в журнал, и я не хочу, чтобы дескриптор записи оставался открытым для этого файла в течение всей жизни программы.

Как я могу читать толькопервая строка?Я думаю, что могу использовать команду оболочки read, но я не знаю, как использовать ее для чего-либо, кроме stdout.Обратите внимание, что я не хочу перенаправлять fd3 на стандартный вывод, чтобы затем использовать read, поскольку я записываю стандартный вывод в другой журнал.

1 Ответ

0 голосов
/ 29 сентября 2018

Вы можете захватить первую строку произвольного файлового дескриптора следующим образом:

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

Это печатает две строки в FD 3 и перенаправляет их на стандартный ввод head.Если вы хотите сохранить этот результат в файле, просто перенаправьте в процесс подстановки .

...