Heim  >  Artikel  >  Backend-Entwicklung  >  Makefile-Befehle „go version“ und „read“.

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

WBOY
WBOYnach vorne
2024-02-09 09:50:09985Durchsuche

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

Aber es funktioniert nicht in Makefile

check-golang-version:
    go version | read _ _ version _ && echo "A $$version Z"

Ergebnis:

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

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")

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

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen