${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"