tee로 쉘 스크립트 래핑하기

tee로 쉘 스크립트 래핑하기

일부 로그를 인쇄하고 일부 인수를 허용하는 bash 스크립트가 있습니다. 스크립트는 로그를 STDOUT에 인쇄합니다. 스크립트 이름이 다음과 같다고 가정해 보겠습니다.AAA.sh

또한 로그를 STDOUTfile. 이는 으로 수행할 수 있습니다 tee.

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

하지만 우리 팀에서는 출력을 tee. 로그를 파일에 저장해야 합니다. 그래서 스크립트를 tee.

내가 하고 싶은 일은

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

그런 다음 AAAwithTee.sh는 로그를 STDOUT 및 로그 파일로 인쇄해야 합니다.
AAA.sh를 어떻게 래핑할 수 있나요?

답변1

이 스크립트는 이전 답변보다 더 잘 작동합니다.

#!/bin/bash

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

이는 공백과 함께 제대로 작동하며 현재 시간을 기준으로 로그 파일에 고유한 이름을 제공합니다. 또한 exec이를 좀 더 효율적으로 만들고 하위 항목이 실행되면 프로세스 트리에서 래퍼를 제거합니다.

답변2

다음을 WrapAAAwithTee.sh포함해야 합니다:

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

tee스크립트 내에서 정상적으로 작동하며 "$@"모든 상위 인수를 포함합니다.

관련 정보