Existe alguma diferença na chamada de variáveis com sintaxe ${var}
e $(var)
? Por exemplo, na forma como a variável será expandida ou algo assim?
110
Não há diferença - eles significam exatamente o mesmo (no GNU Make e no POSIX make).
Acho que $(round brackets)
parece mais arrumado, mas isso é apenas preferência pessoal.
(Outras respostas apontam para as seções relevantes da documentação do GNU Make, e observe que você não deve misturar as sintaxes dentro de uma única expressão)
$()
in make para evitar confusão (mais do que já existe) entre as variáveis make e shell. GNU Faça documentação sobre referências de variáveis .deploy: ${DEPS}
como um erro de sintaxe para mim, mas mostradodeploy: $(DEPS)
como correto, embora ambas as grafias tenham o mesmo efeito quando invocadas emmake
.A seção Noções básicas de referências de variáveis da
GNU make
documentação afirma que não há diferenças :fonte
Como já corretamente apontado, não há diferença, mas seja cauteloso para não misturar os dois tipos de delimitadores, pois isso pode levar a erros crípticos como o unomadh GNU faz exemplo.
Do GNU make manual sobre a sintaxe de chamada de função (grifo meu):
fonte
Na verdade, parece ser bastante diferente:
saídas
Mas até agora eu só encontrei essa diferença quando o nome da variável em $ {...} contém uma vírgula. A princípio pensei que $ {...} estava expandindo a vírgula não como parte do valor, mas descobri que não sou capaz de hackear dessa forma. Ainda não entendi ... Se alguém tiver alguma explicação, fico feliz em saber!
fonte
O estilo $ {} permite que você teste as regras do make no shell, se você tiver as variáveis de ambiente correspondentes definidas, desde que seja compatível com o bash.
fonte
Faz diferença se a expressão contiver colchetes não balanceados:
->
Para referências de variáveis, isso faz diferença para funções ou para nomes de variáveis que contêm colchetes (má ideia)
fonte