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

関連情報