Problem:
Es treten Schwierigkeiten bei der Interpolation eines Ausdrucks innerhalb eines Befehls in einem Makefile auf Aufgrund der Bewertung Probleme.
Erklärung:
Ein Makefile verwendet andere Auswertungsregeln als ein Shell-Skript. In einem Makefile wird das Dollarzeichen ($) für die Variablenerweiterung verwendet, aber wenn es innerhalb eines Befehls verwendet wird, wird es möglicherweise nicht wie beabsichtigt ausgewertet.
Lösung:
Um das $ in einem Makefile-Befehl zu maskieren und eine Shell-ähnliche Ausdrucksinterpolation zu ermöglichen, verwenden Sie ein zweites Dollarzeichen ($$). Dies weist das Makefile an, das erste $ als wörtlichen Text zu behandeln und die Interpolation an die Shell zu verschieben.
Beispiel:
Um Tests in einem Go-Projekt auszuführen, aber den Anbieter zu überspringen Tests können Sie das folgende Makefile-Snippet verwenden:
test: go test $$(go list ./... | grep -v /vendor/) .PHONY: test
In diesem Beispiel ist die $$(go list ./... | grep -v /vendor/) wird in doppelte Dollars eingeschlossen, um sicherzustellen, dass der Ausdruck von der Shell interpoliert wird.
Durch das Maskieren des Dollarzeichens wertet das Makefile den Ausdruck korrekt aus und liefert die erwartete Ausgabe.
Das obige ist der detaillierte Inhalt vonWie kann ich der Dollarzeichen-Interpolation in Makefile-Befehlen entgehen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!