Heim > Backend-Entwicklung > Golang > Makefile-Befehle „go version' und „read'.

Makefile-Befehle „go version' und „read'.

WBOY
Freigeben: 2024-02-09 09:50:09
nach vorne
1025 Leute haben es durchsucht

Makefile `go version` 和 `read` 命令

In diesem Artikel stellt Ihnen der PHP-Editor Baicao zwei häufig verwendete Befehle in Makefile vor: „go version“ und „read“. Beim Schreiben von Makefile können uns diese beiden Befehle dabei helfen, die Versionsinformationen der Go-Sprache abzurufen und anzuzeigen sowie Daten aus Benutzereingaben abzurufen. Durch das Verständnis und die flexible Verwendung dieser beiden Befehle können wir unsere Go-Projekte effizienter verwalten und erstellen. Werfen wir einen genaueren Blick unten!

Frageninhalt

Ich möchte die Go-Version im Makefile extrahieren und überprüfen.

Das funktioniert in der Shell:

% go version | read _ _ version _ && echo "A $version Z"
A go1.21.1 Z
Nach dem Login kopieren

Aber es funktioniert nicht in Makefile

check-golang-version:
    go version | read _ _ version _ && echo "A $$version Z"
Nach dem Login kopieren

Ergebnis:

% make check-golang-version
go version | read _ _ version _ && echo "A $version Z"
A  Z
Nach dem Login kopieren

Letztendlich möchte ich einen Scheck wie diesen:

check-golang-version:
    go version | read _ _ version _ && test "$$version" = "go1.21.1" || $(error "wrong go version: $$version")
Nach dem Login kopieren

Workaround

Standardmäßig fungiert make 使用 /bin/sh als Shell (siehe 5.3.2 Shell auswählen).

Und wenn Sie einen Befehl in einer Shell ausführen, verhält sich die Shell höchstwahrscheinlich anders als die meisten anderen Shells. Ein Beispiel finden Sie unter zshzshhttps://riptutorial.com/zsh/example/19869/pipes-and-subshells.

Ich empfehle,

zu verwenden, um die Version von go abzurufen und sie einer Makefile-Variablen zuzuweisen: go env GOVERSION

version = $(shell go env GOVERSION)

check-golang-version:
ifneq ($(version), go1.21.1)
    $(error wrong go version: $(version))
endif
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonMakefile-Befehle „go version' und „read'.. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:stackoverflow.com
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage