Redirecionar novamente o STDERR em K / SH?

1

Uma vez que o STDERR é redirecionado, por exemplo, para um arquivo, como ele pode ser redirecionado de volta para o descritor de arquivo original 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'

Contexto

Esta solução de redirecionamento deve funcionar em um cron job. Por exemplo, se o cron executa um script externo, esse script redirecionará stdout e stderr para arquivos de log e erro relevantes, respectivamente. No entanto, se uma execução no script falhar ou algo precisar ser reportado ao proprietário do trabalho, eu preciso enviar as mensagens de erro para que o cron as receba e envie mensagens.

    
por Clint Pachl 04.10.2010 / 07:34

1 resposta

2

Tente:

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

Editar 1:

#!/usr/bin/env ksh

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

Editar 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'
    
por 04.10.2010 / 08:49