#ifndef
파일을 구문 분석하고 각 줄을 and 로 래핑하고 싶습니다 #endif
.
예를 들어 다음과 같이 시작합니다.
#define X 1
#define Y 2
#define Z 3
나는 다음을 생성하고 싶다:
#ifndef X
#define X 1
#endif
#ifndef Y
#define Y 2
#endif
#ifndef Z
#define Z 3
#end if
스크립트 awk
는 콘솔에서는 작동하지만 내부에서는 작동하지 않습니다 make
.
awk '{printf "#ifndef %s\n%s %s %s\n#endif\n", $2, $1, $2, $3}' globals.tmp > globals.h
내부적으로 실행하면 make
출력은 다음과 같습니다.
awk: cmd. line:1: {printf "#ifndef %s\n%s %s %s\n#endif\n", , , , }
awk: cmd. line:1: ^ syntax error
awk: cmd. line:1: {printf "#ifndef %s\n%s %s %s\n#endif\n", , , , }
awk: cmd. line:1: ^ syntax error
awk: cmd. line:1: {printf "#ifndef %s\n%s %s %s\n#endif\n", , , , }
awk: cmd. line:1: ^ syntax error
awk: cmd. line:1: {printf "#ifndef %s\n%s %s %s\n#endif\n", , , , }
awk: cmd. line:1: ^ syntax error
awk: cmd. line:1: {printf "#ifndef %s\n%s %s %s\n#endif\n", , , , }
awk: cmd. line:1: ^ unexpected newline or end of string
그래서 분명히 현장을 당기지 않습니다. 단일, 이중 및 삼중 백슬래시를 추가하고 따옴표를 변경하는 등을 위해 , 및 : $1
을 사용해 보았지만 아무것도 작동하지 않습니다. 나도 알고 있고 내가 이해하지 못하는 "문제"가 있는지 궁금해서 이상할 수도 있습니다.$2
$3
awk
make