일부 로그를 인쇄하고 일부 매개변수를 허용하는 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
스크립트 내에서 정상적으로 실행되며 "$@"
모든 상위 매개변수를 포함합니다.