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

Перенаправить 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'

Контекст

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

решение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'

Связанный контент