shell-script-pt
[Top][All Lists]
Advanced

[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]



reply via email to

[Prev in Thread] Current Thread [Next in Thread]