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 STDOUT
y 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 exec
lo 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.sh
contener:
#!/bin/bash
AAA.sh "$@" | tee 2012-07-03-080000.log
tee
funcionará normalmente dentro de un script y "$@"
contendrá todos los argumentos principales.