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"

관련 정보