Envolviendo un script de shell con tee

Envolviendo un script de shell con tee

Hay un script bash que imprime algunos registros y permite algunos argumentos. El script imprime los registros en STDOUT. Digamos que el nombre del script esAAA.sh

También me gustaría crear el script para imprimir los registros STDOUTy un archivo file. Esto se puede hacer con tee.

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

Pero mi equipo a menudo se olvida de canalizar la salida a tee. Deberíamos guardar los registros en un archivo. Entonces me gustaría terminar el guión con tee.

Lo que quiero hacer es

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

Luego AAAwithTee.sh debería imprimir el registro en STDOUT y un archivo de registro.
¿Cómo puedo envolver el AAA.sh?

Respuesta1

Este script funcionará mejor que la respuesta anterior:

#!/bin/bash

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

Esto funcionará correctamente con espacios y le dará un nombre único al archivo de registro, según la hora actual. También execlo hace un poco más eficiente y elimina el contenedor de su árbol de procesos, una vez que el niño se ha iniciado.

Respuesta2

Debe WrapAAAwithTee.shcontener:

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

teefuncionará normalmente dentro de un script y "$@"contendrá todos los argumentos principales.

información relacionada