이 함수에서는 무슨 일이 일어나고 있나요?

이 함수에서는 무슨 일이 일어나고 있나요?
log ()
{
  A=$1
  print "`date '+%m/%d/%y  %H:%M:%S'`: $A"  >> LOGFILE.txt
  print "$A"
}

이것이 우리 환경의 대부분의 쉘 스크립트에서 로깅 기능이 사용되는 방식입니다. 다음과 같은 스크립트에서 사용되었습니다.

if ["blah" != "0"]
then
log "not a zero value"
fi

if 조건이 충족되면 로그 기능이 어떻게 작동하나요?

로그 함수의 각 줄의 의미를 설명해 주실 수 있나요?

답변1

ksh또는 zsh둘 다 내장 쉘을 가지고 있다는 것을 알게 되면 print도움이 될 것입니다 .

  1. A=$1
  2. print "`date '+%m/%d/%y  %H:%M:%S'`: $A"  >> LOGFILE.txt
  3. print "$A"

1행: $1은 "log() 함수의 첫 번째 매개변수"를 의미합니다. 따라서 첫 번째 매개변수의 값을 log"A"라는 변수에 할당하십시오.

2행: "Accent"(일명 "back tics")는 "포함된 명령을 실행하고 해당 출력을 역틱된 문자열로 바꿉니다. $A는 ""A" 값이라는 변수의 값"을 의미합니다. 따라서, 을 실행하여 문자열을 구성하고 date값을 삽입합니다 A. 쉘은 일반적으로 rvalue(할당된 이름)와 lvalue(변수의 내용)를 구분합니다. 파일 끝에 "LOGFILE"이라고 합니다.

3행: "A"라는 변수의 값을 표준 출력에 씁니다.

log함수는 sh 스크립트 로깅을 수행하는 매우 일반적인 방법입니다. 즉, 메시지의 복사본을 날짜 스탬프 파일에 기록하고 복사본을 표준 출력에 기록합니다. sh 스크립트는 터미널 창에서 실행되며 메시지는 스크롤되지만 나중에 디버깅할 수 있도록 파일에도 표시됩니다.

if 문의 true 절에 있는 log함수의 첫 번째 형식 매개변수로 전체 문자열 "0이 아닌 값"을 전달합니다 log. 이는 라인 1의 변수 "A"에 할당된 값입니다.

답변2

A=$1

변수 A에 첫 번째 함수 인수 할당

print "`date '+%m/%d/%y  %H:%M:%S'`: $A"  >> LOGFILE.txt

변수 A의 날짜와 값을 인쇄하여 LOGFILE.txt에 추가합니다.

print "$A"

첫 번째 함수 인수를 인쇄합니다.

그런데, 이 줄에서는: if ["blah" != "0"]

[]아래와 같이 앞뒤에 공백이 있어야 합니다 .

if [ "blah" != "0" ]

그런데 일부 쉘에서는 print가 표준 명령이 아닙니다.

관련 정보