¿Hay alguna diferencia al invocar variables con sintaxis ${var}
y $(var)
? Por ejemplo, ¿en la forma en que se expandirá la variable o algo así?
110
No hay diferencia: significan exactamente lo mismo (en GNU Make y en POSIX make).
Creo que se $(round brackets)
ve más ordenado, pero eso es solo una preferencia personal.
(Otras respuestas apuntan a las secciones relevantes de la documentación de GNU Make y tenga en cuenta que no debe mezclar las sintaxis en una sola expresión)
$()
in make para evitar causarme confusión (más de la que ya existe) entre las variables make y shell. GNU Make documentación sobre referencias variables .deploy: ${DEPS}
como un error de sintaxis para mí, pero se mostródeploy: $(DEPS)
como correcto, aunque ambas ortografías tienen el mismo efecto cuando se invocamake
.La sección Conceptos básicos de referencias de variables de la
GNU make
documentación no indica diferencias :fuente
Como ya se señaló correctamente, no hay diferencia, pero tenga cuidado de no mezclar los dos tipos de delimitadores, ya que puede llevar a errores crípticos como unomadh GNU make example.
Del manual GNU make sobre la sintaxis de llamadas a funciones (el énfasis es mío):
fuente
En realidad, parece ser bastante diferente:
salidas
Pero hasta ahora solo encontré esta diferencia cuando el nombre de la variable en $ {...} contiene una coma. Primero pensé que $ {...} estaba expandiendo la coma no como parte del valor, pero resulta que no puedo hackearlo de esta manera. Sigo sin entender esto ... Si alguien tuviera una explicación, ¡estaría feliz de saberlo!
fuente
El estilo $ {} le permite probar las reglas de creación en el shell, si tiene configuradas las variables de entorno correspondientes, ya que es compatible con bash.
fuente
Hace una diferencia si la expresión contiene corchetes no balanceados:
->
Para referencias de variables, esto marca la diferencia para funciones o para nombres de variables que contienen corchetes (mala idea)
fuente