Heim > Backend-Entwicklung > Golang > Wie entkomme ich der Ausdrucksinterpolation in Makefiles, um Befehle korrekt auszuführen?

Wie entkomme ich der Ausdrucksinterpolation in Makefiles, um Befehle korrekt auszuführen?

Barbara Streisand
Freigeben: 2024-12-25 03:27:11
Original
579 Leute haben es durchsucht

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

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/)
Nach dem Login kopieren

Wenn Sie jedoch versuchen, dies in ein Makefile zu integrieren:

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

.PHONY: test
Nach dem Login kopieren

Sie werden feststellen, dass der Ausdruck nicht so ist interpoliert:

$ make
go test
?       github.com/m90/some-repo    [no test files]
Nach dem Login kopieren

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
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage