2009-12-08 4 views
0

Avec une teneur en Makefile GNU:Pourquoi le résultat du shell makefile diffère-t-il de celui effectué dans shell?

SVNVERSION_NUMBER := $(shell svnversion --version | perl -lne 'print $1 if /version (\d+.\d+.\d+)/') 

$(error $(SVNVERSION_NUMBER)) 

j'obtenir un résultat de:

Makefile:3: *** svnversion, version 1.6.2 (r37639). Stop. 

Cependant, à la coquille si je tape:

svnversion --version | perl -lne 'print $1 if /version (\d+.\d+.\d+)/' 

-je obtenir le résultat:

1.6.2 

De toute évidence, ma syntaxe shell ne fait pas ce que je pense, mais je ne sais pas pourquoi.

Merci.

Répondre

7

$ est spécial dans les chaînes de fabrication. $$ pour un signe dollar littéral dans la commande perl.