Envolvendo um script de shell com tee

Envolvendo um script de shell com tee

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

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

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

Mas minha equipe muitas vezes se esquece de canalizar a saída para tee. Devemos salvar os logs em arquivo. Então, eu gostaria de encerrar o script com tee.

O que eu quero fazer é

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

Então AAAwithTee.sh deve imprimir o log em STDOUT e um arquivo de log.
Como posso agrupar o AAA.sh?

Responder1

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 dará um nome exclusivo ao arquivo de log, com base na hora atual. Isso exectambém o torna um pouco mais eficiente e remove o wrapper da sua árvore de processos, assim que o filho for iniciado.

Responder2

Você WrapAAAwithTee.shdeve conter:

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

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

informação relacionada