Heim >Backend-Entwicklung >Golang >Wie entkomme ich der Ausdrucksinterpolation in Makefiles, um Befehle korrekt auszuführen?
Ausdrucksinterpolation in Makefiles umgehen
Beim Schreiben von Makefiles möchte man häufig Befehle ausführen, die Ausdrücke enthalten. Ein häufiges Beispiel hierfür sind Tests, bei denen Sie Tests möglicherweise selektiv auf der Grundlage bestimmter Kriterien ausführen möchten.
Angenommen, Sie arbeiten an einem Go-Projekt und möchten Tests aus dem Anbieterverzeichnis ausschließen. Sie können dies ganz einfach in der Befehlszeile tun, indem Sie Folgendes verwenden:
$ go test $(go list ./... | grep -v /vendor/)
Wenn Sie jedoch versuchen, dies in ein Makefile zu integrieren:
test: go test $(go list ./... | grep -v /vendor/) .PHONY: test
Sie werden feststellen, dass der Ausdruck nicht so ist interpoliert:
$ make go test ? github.com/m90/some-repo [no test files]
Um dieses Problem zu beheben, müssen Sie das „$“-Zeichen im Ausdruck mit einem zweiten Escapezeichen versehen „$“:
test: go test $$(go list ./... | grep -v /vendor/) .PHONY: test
Durch das Escapezeichen „$“ weisen Sie das Makefile an, den Ausdruck als auszuführenden Literalbefehl zu interpretieren, anstatt zu versuchen, die Variable zu ersetzen.
Das obige ist der detaillierte Inhalt vonWie entkomme ich der Ausdrucksinterpolation in Makefiles, um Befehle korrekt auszuführen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!