-DQUOTE=yes
아래 코드는 어떻게 작동하나요?
두 번째 줄이 나올 줄 알았는데ifelse(yes,yes,Learn Linux today!)
다른 부분은 나에게 의미가 있습니다.
~에서Linux 포켓 가이드 - Daniel J. Barrett
$ cat myfile
My name is NAME and I am AGE years old.
ifelse(QUOTE,yes,Learn Linux today!)
$ m4 -DNAME=Sandy -DAGE=25 -DQUOTE=yes myfile
My name is Sandy and I am 25 years old.
Learn Linux today!
답변1
m4
많은 내장 처리 매크로가 입력에 나타나면 프로세서는 해당 매크로의 이름을 인식하고 ifelse
그 중 하나입니다.
일반적으로 이러한 지침을 실수로 처리하는 것을 방지하기 위해 m4
해당 옵션과 함께 사용됩니다. 를 -P
사용하려면 , 등 실제로 처리하려는 모든 내장 지시문의 이름 앞에 -P
문자열을 추가해야 합니다.m4_
m4_define
m4_ifelse
m4_dnl
m4_
이렇게 하면 접두사가 없는 명령어는 텍스트로 처리되지 않으므로 입력에서 매크로 명령어가 예기치 않게 실행되는 것을 방지할 수 있습니다 .
$ cat file
My name is NAME and I am AGE years old.
ifelse(QUOTE,yes,Learn Linux today!)
$ m4 -P -DNAME=Sandy -DAGE=25 -DQUOTE=yes file
My name is Sandy and I am 25 years old.
ifelse(yes,yes,Learn Linux today!)
그렇지 않은 경우에는 -P
다중 분기 명령으로 처리됩니다 ifelse
. 이 지시는m4
if
then
else
여기에 녹음하세요. 간단히 말해서, 처음 두 매개변수가 동일하면 전체 명령어는 세 번째 매개변수로 대체됩니다. 이는 초기 명령을 실행할 때 표시되는 것입니다. 첫 번째 yes
( 에서 확장됨 QUOTE
)는 두 번째 매개변수와 동일 yes
하므로 Learn Linux today!
확장됩니다. QUOTE
다른 문자열로 정의한 경우 ifelse
지시문은 네 번째 인수로 대체되지만 문서에 네 번째 인수가 없으므로 다른 항목으로 대체됩니다(즉, 제거됨).