Dans cet article, l'éditeur PHP Baicao vous présentera deux commandes couramment utilisées dans Makefile : `go version` et `read`. Lors de l'écriture de Makefile, ces deux commandes peuvent nous aider à obtenir et afficher les informations de version du langage Go, ainsi qu'à obtenir des données à partir des entrées de l'utilisateur. En comprenant et en utilisant de manière flexible ces deux commandes, nous pouvons gérer et construire nos projets Go plus efficacement. Apprenons-en davantage ensemble !
Je souhaite extraire et vérifier la version go dans le Makefile.
Cela fonctionne dans le shell :
% go version | read _ _ version _ && echo "A $version Z" A go1.21.1 Z
Mais ça ne marche pas dans Makefile
check-golang-version: go version | read _ _ version _ && echo "A $$version Z"
Résultat :
% make check-golang-version go version | read _ _ version _ && echo "A $version Z" A Z
À terme, je veux un chèque comme celui-ci :
check-golang-version: go version | read _ _ version _ && test "$$version" = "go1.21.1" || $(error "wrong go version: $$version")
Par défaut, make
使用 /bin/sh
agit comme le shell (voir 5.3.2 Sélection d'un shell).
Et très probablement, lorsque vous exécutez une commande dans un shell, le shell zsh
。 zsh
piping se comporte différemment de la plupart des autres shells. Voir https://riptutorial.com/zsh/example/19869/pipes-and-subshells pour un exemple.
Je recommande d'utiliser go env GOVERSION
pour obtenir la version de go et l'attribuer à une variable Makefile :
version = $(shell go env GOVERSION) check-golang-version: ifneq ($(version), go1.21.1) $(error wrong go version: $(version)) endif
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!