${1}
다음 예에서는 echo 문 출력을 인수()로 로거 함수에 전달하고 싶습니다 .
logfile=./testlog
`touch ${logfile}`
function logger(){
echo "[${USER}] [$nowTimestamp] [INFO] ${1}" >> ${logfile}
}
echo "started executing script" | logger
답변1
Aside: logger
표준 Unix(POSIX) 유틸리티입니다. 혼동을 피하기 위해 다른 이름을 선택할 수 있습니다.
하나를 위해프로그램를 사용할 수 있습니다 | xargs -d '\n' logger
. 여기에는 필요한 경우 "shebang" 줄을 사용하여 함수를 스크립트 파일로 다시 작성하는 경우가 포함되지만 스크립트에 대한 올바른 환경을 모두 제공하는 것은 어려울 수 있습니다.
함수의 경우 매개변수를 전달하는 유일한 방법은 매개변수를 전달하는 것입니다. 첫 번째 함수를 래핑하기 위해 두 번째 함수를 작성할 수 있습니다. 이름을 바꿨습니다 logger1
.
logger1(){ echo "... $1" >>$file; }
logger2(){ read -r x; logger1 "$x"; }
echo this is some log info | logger2
또는 read
먼저 함수를 입력으로 전달할 수도 있습니다. 대부분의 시스템에서 실제 로깅 도구가 수행하는 것처럼 루프를 작성하고 여러 줄(제공된 경우)을 처리하도록 할 수도 있습니다.
답변2
echo 문을 함수 안에 넣으세요.
logfile=./testlog
`touch ${logfile}`
function logger()
{
echo "$@"
echo "[${USER}] [$nowTimestamp] [INFO] ${1}" >> ${logfile}
}
logger "started executing scirpt"