Por que é resultado shell makefile diferente do que fazer mesmo no escudo?
Pergunta
Com um conteúdo makefile GNU de:
SVNVERSION_NUMBER := $(shell svnversion --version | perl -lne 'print $1 if /version (\d+.\d+.\d+)/')
$(error $(SVNVERSION_NUMBER))
Eu recebo um resultado de:
Makefile:3: *** svnversion, version 1.6.2 (r37639). Stop.
No entanto, no shell se eu digitar:
svnversion --version | perl -lne 'print $1 if /version (\d+.\d+.\d+)/'
Eu recebo o resultado:
1.6.2
Claramente, a minha sintaxe shell não está fazendo o que eu acho que é, mas eu não estou claro sobre o porquê.
Graças.
Solução
$ é especial em cordas fazer. $$ para um sinal de dólar literal no comando perl.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow