echo 문 출력을 매개변수로 함수에 전달하는 방법은 무엇입니까?

echo 문 출력을 매개변수로 함수에 전달하는 방법은 무엇입니까?

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

관련 정보