Heim > Backend-Entwicklung > Golang > Warum schlägt mein Makefile-Befehl fehl, wenn Shell-Ausdrücke verwendet werden?

Warum schlägt mein Makefile-Befehl fehl, wenn Shell-Ausdrücke verwendet werden?

Patricia Arquette
Freigeben: 2024-12-26 01:46:09
Original
923 Leute haben es durchsucht

Why Does My Makefile Command Fail When Using Shell Expressions?

Makefile-Auswertung von Ausdrücken

Bei der Arbeit mit Makefiles ist es wichtig zu verstehen, wie Ausdrücke in Befehle interpoliert werden. Ein häufiger Fallstrick entsteht beim Versuch, Shell-Ausdrücke in Makefile-Befehle zu integrieren.

Ein solcher Fall ist die Arbeit mit Go-Tests. Um Abhängigkeiten in einem Go-Projekt eines Anbieters zu überspringen, könnte man den folgenden Befehl in der Befehlszeile verwenden:

$ go test $(go list ./... | grep -v /vendor/)
Nach dem Login kopieren

Dieser Befehl filtert erfolgreich Tests von Anbietern heraus. Wenn Sie jedoch versuchen, denselben Befehl wie folgt in ein Makefile aufzunehmen:

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

.PHONY: test
Nach dem Login kopieren

Der Ausdruck wird nicht ausgewertet. Stattdessen wird der Befehl wörtlich behandelt, was zu einem Fehler führt.

Um dieses Problem zu beheben, maskieren Sie das Dollarzeichen ($) doppelt, wie unten gezeigt:

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

.PHONY: test
Nach dem Login kopieren

By double Durch das Escapezeichen des Dollarzeichens versteht das Makefile, dass der Ausdruck von einer Shell ausgewertet werden soll, was die erfolgreiche Interpolation und Ausführung des Befehls ermöglicht.

Das obige ist der detaillierte Inhalt vonWarum schlägt mein Makefile-Befehl fehl, wenn Shell-Ausdrücke verwendet werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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