[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Definindo cópia padrão do stdout para um arquivo em korn shell
From: |
Michel |
Subject: |
Definindo cópia padrão do stdout para um arquivo em korn shell |
Date: |
Fri, 15 Jul 2011 09:39:25 -0300 |
Bom dia senhores
Gostaria de realizar a cópia do standrd-output (de todo um script) para um
arquivo em korn-shell.
Tem um script muito grande (+ de mil linhas) e a pessoa que o criou não o
fez com rotina de log, o script apenas joga o resultado na tela (output
muito grande..)
Gostaria de copiar todo o output do mesmo para um arquivo, com um comando no
inicio do script, sem ter que usar o " | tee *<arquivo>*" em sua chamada.
Sei que podria resolver isso usando o | tee na chamada do mesmo, mas não
posso contar com a boa vontade de todos os usuários que utilizarão o script.
Queria me precaver dessa falha, forçando o script internamente a auto copiar
o stdout para um arquivo.
Ou seja, não quero um simples redirecionamento ( >> arquivo ), pois o
usuário ainda precisa do output na tela, e tb não gostaria de ter que editar
o script inteiro (mais de mil linhas) pra colocar o | tee em comando por
comando.
Eu achei uma solução em bash, que fuciona, mas não consegui faze-la
funcionar em ksh (AIX)
Soluçao em bash:
# Copia todo o stdout para um arquivo std.out
exec > >(tee std.out)
# faz o mesmo para o sdterr
exec 2>&1
echo "iniciando script ... `date`"
echo "comando 1..."
echo "comando 2..."
echo "error cmd 2" >&2
---------------------------------
Depois de executado o script, voi-lá, temos todo o output da tela, replicado
no arquivo, mas sem o uso do tee em sua chamada de execução.
#> cat std.out
iniciando script ... Fri Jul 15 09:19:57 BRT 2011
comando 1...
comando 2...
error cmd 2
--
Michel I. Moreira
[As partes desta mensagem que não continham texto foram removidas]
- Definindo cópia padrão do stdout para um arquivo em korn shell,
Michel <=