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가 표준 명령이 아닙니다.