tee로 쉘 스크립트 래핑하기

tee로 쉘 스크립트 래핑하기

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

STDOUT또한 로그를 및 에 인쇄하는 스크립트를 만들고 싶습니다 file. 이 작업은 를 통해 수행할 수 있습니다 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스크립트 내에서 정상적으로 실행되며 "$@"모든 상위 매개변수를 포함합니다.

관련 정보