Envolvendo um shell script com tee

5

Existe um script bash que imprime alguns logs e permite alguns argumentos. O script imprime os logs para STDOUT. Digamos que o nome do script seja AAA.sh

Eu também gostaria de fazer o script para imprimir os logs para STDOUT e file . Isso pode ser feito com tee .

$ AAA.sh -a -b --c=d | tee 2012-07-03-080000.log

Mas minha equipe frequentemente esquece de enviar a saída para tee . Devemos salvar os logs para o arquivo. Então, eu gostaria de envolver o script com tee .

O que eu quero fazer é

$ WrapAAAwithTee.sh -a -b --c=d

Em seguida, AAAwithTee.sh deve imprimir o log em STDOUT e um arquivo de log.
Como posso envolver o AAA.sh?

    
por Benjamin 03.07.2012 / 11:38

2 respostas

8

Este script funcionará melhor que a resposta anterior:

#!/bin/bash

exec AAA.sh "$@" | tee "$(date +'%F-%H%M%S').log"

Isso funcionará corretamente com espaços e fornecerá um nome exclusivo ao arquivo de log, com base na hora atual. O exec também torna um pouco mais eficiente e remove o wrapper de sua árvore de processos, assim que o filho é iniciado.

    
por 03.07.2012 / 12:45
2

Seu WrapAAAwithTee.sh deve conter:

#!/bin/bash
AAA.sh "$@" | tee 2012-07-03-080000.log

tee funcionará normalmente dentro de um script e "$@" conterá todos os argumentos pai.

    
por 03.07.2012 / 12:02