Maison > développement back-end > Golang > Comment puis-je échapper à l'interpolation d'expression dans les Makefiles pour exécuter correctement les commandes ?

Comment puis-je échapper à l'interpolation d'expression dans les Makefiles pour exécuter correctement les commandes ?

Barbara Streisand
Libérer: 2024-12-25 03:27:11
original
551 Les gens l'ont consulté

How Do I Escape Expression Interpolation in Makefiles to Execute Commands Correctly?

Échapper à l'interpolation d'expression dans les Makefiles

Lors de l'écriture de Makefiles, il est courant de vouloir exécuter des commandes qui incorporent des expressions. Un exemple courant de ceci est celui des tests, où vous souhaiterez peut-être exécuter des tests de manière sélective en fonction de certains critères.

Supposons que vous travaillez sur un projet Go et que vous souhaitiez exclure les tests du répertoire des fournisseurs. Vous pouvez facilement le faire dans la ligne de commande en utilisant :

$ go test $(go list ./... | grep -v /vendor/)
Copier après la connexion

Cependant, lorsque vous essayez de l'incorporer dans un Makefile :

test:
    go test $(go list ./... | grep -v /vendor/)

.PHONY: test
Copier après la connexion

Vous remarquerez que l'expression n'est pas interpolé :

$ make
go test
?       github.com/m90/some-repo    [no test files]
Copier après la connexion

Pour résoudre ce problème, vous devez échapper le caractère "$" dans l'expression à l'aide d'une seconde "$":

test:
    go test $$(go list ./... | grep -v /vendor/)

.PHONY: test
Copier après la connexion

En échappant le "$", vous demandez au Makefile d'interpréter l'expression comme une commande littérale à exécuter, plutôt que d'essayer de remplacer la variable.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal