Повторно перенаправить STDERR в K/SH?

После того как STDERR перенаправляется, например, в файл, как он может быть перенаправлен назад к исходному дескриптору файла 2?

#!/bin/sh
exec 2>/tmp/err
print -u2 'log errors to file'
exec 2>&2  (how do we do this???)
print -u2 'log errors to console'

Контекст

Это решение для перенаправления должно работать в задании крона. Например, если крон выполнит внешний сценарий, то тот сценарий перенаправит stdout и stderr к соответствующему журналу и ошибочным файлам, соответственно. Однако, если выполнение в сценарии перестало работать, или о чем-то нужно сообщить владельцу задания, я должен произвести сообщения об ошибках, таким образом, крон получит их и отправит почту.

1
задан 04.10.2010, 10:07

1 ответ

Попытка:

#!/usr/bin/env ksh
exec 2>ksh_err.txt
print -u2 'log errors to file'
exec 2>`tty`
print -u2 'log errors to console'

Редактирование 1:

#!/usr/bin/env ksh

exec 8>err.txt
print -u8 'log errors to file'
print -u2 'log errors to console'

Редактирование 2:

#!/usr/bin/env ksh

exec 3>&2
exec 2>err.txt
print -u2 'log errors to file'
exec 2>&3
print -u2 'log errors to console'
2
ответ дан 12.12.2019, 13:08

Теги

Похожие вопросы