Y a-t-il des différences dans l'appel de variables avec la syntaxe ${var}
et $(var)
? Par exemple, dans la manière dont la variable sera développée ou quoi que ce soit?
111
Il n'y a pas de différence - ils signifient exactement la même chose (dans GNU Make et POSIX make).
Je pense que cela a l' $(round brackets)
air plus ordonné, mais c'est juste une préférence personnelle.
(D'autres réponses pointent vers les sections pertinentes de la documentation GNU Make, et notez que vous ne devriez pas mélanger les syntaxes dans une seule expression)
$()
in make pour éviter de me créer une confusion (plus que ce qui existe déjà) entre les variables make et shell. GNU Make documentation sur les références de variables .deploy: ${DEPS}
en évidence comme une erreur de syntaxe pour moi, mais s'est montrédeploy: $(DEPS)
correct, même si les deux orthographes ont le même effet lorsqu'elles sont invoquées dansmake
.Les bases de références Variable section de l'
GNU make
état de la documentation aucune différence :la source
Comme déjà correctement souligné, il n'y a pas de différence mais faites attention à ne pas mélanger les deux types de délimiteurs car cela peut conduire à des erreurs cryptiques comme unomadh GNU make example.
Du manuel GNU make sur la syntaxe des appels de fonction (c'est moi qui souligne):
la source
En fait, cela semble être assez différent:
les sorties
Mais jusqu'à présent, je n'ai trouvé cette différence que lorsque le nom de la variable dans $ {...} contient lui-même une virgule. J'ai d'abord pensé que $ {...} étendait la virgule non comme une valeur, mais il s'avère que je ne suis pas capable de le pirater de cette façon. Je ne comprends toujours pas ça ... Si quelqu'un avait une explication, je serais heureux de savoir!
la source
Le style $ {} vous permet de tester les règles de fabrication dans le shell, si vous avez défini les variables d'environnement correspondantes, car cela est compatible avec bash.
la source
Cela fait une différence si l'expression contient des crochets non équilibrés:
->
Pour les références de variables, cela fait une différence pour les fonctions, ou pour les noms de variables qui contiennent des crochets (mauvaise idée)
la source