make [duplicate] 내에서 awk가 제대로 작동하지 않습니다.

make [duplicate] 내에서 awk가 제대로 작동하지 않습니다.

#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$3awkmake

관련 정보