여러 "echo STRING" 명령이 포함된 bash 스크립트가 있습니다. 로거를 사용하여 STRING을 기록하고 싶지만 여전히 표준 출력으로 인쇄하고 싶습니다. echo STRING | logger
분명히 그렇지 않습니다.
편집: echo STRING | tee >(logger)
그랬어요. >(COMMAND)는 프로세스 입력을 대체하는 프로세스 대체입니다.
답변1
Bash에서는 다음을 수행할 수 있습니다.
logger(){
tee >(command logger)
}
logger
그런 다음 이전과 같이 파이프하십시오.
Stephen Harris가 제안한 대로 사용자 정의 로깅 기능을 통해 이를 구현하려면 다음을 수행할 수 있습니다.
logger(){
tee >(command logger)
}
echolog(){
printf '%s\n' "$@" | logger
}
답변2
나는 보통 다음과 같은 로깅 함수를 작성합니다.
mylog()
{
echo "$@"
echo "$@" | logger
}
mylog "Hello, world!"
기록하려는 내용에 유연성을 제공하고 필요한 경우 줄 앞에 타임스탬프를 추가하는 등의 작업도 수행할 수 있습니다.