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