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 STDOUT
e 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 exec
també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.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.