Rumah >pembangunan bahagian belakang >Golang >Makefile arahan `pergi versi` dan `baca`

Makefile arahan `pergi versi` dan `baca`

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBke hadapan
2024-02-09 09:50:091074semak imbas

Makefile `go version` 和 `read` 命令

Dalam artikel ini, editor PHP Baicao akan memperkenalkan anda kepada dua arahan yang biasa digunakan dalam Makefile: `pergi versi` dan `baca`. Semasa menulis Makefile, kedua-dua arahan ini boleh membantu kami mendapatkan dan memaparkan maklumat versi bahasa Go, serta mendapatkan data daripada input pengguna. Dengan memahami dan menggunakan kedua-dua arahan ini secara fleksibel, kami boleh mengurus dan membina projek Go kami dengan lebih cekap. Mari kita ketahui lebih lanjut mengenainya bersama-sama!

Kandungan soalan

Saya ingin mengekstrak dan mengesahkan versi go dalam Makefile.

Ini berfungsi dalam cangkerang:

% go version | read _ _ version _ && echo "A $version Z"
A go1.21.1 Z

Tetapi ia tidak berfungsi dalam Makefile

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

Hasil:

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

Akhirnya saya nak cek macam ni:

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

Penyelesaian

Secara lalai, make 使用 /bin/sh bertindak sebagai cangkerang (lihat 5.3.2 Memilih cangkerang).

Dan kemungkinan besar apabila anda melaksanakan arahan dalam shell, shell zshzshpiping berkelakuan berbeza daripada kebanyakan shell lain. Lihat https://riptutorial.com/zsh/example/19869/pipes-and-subshells untuk contoh.

Saya syorkan menggunakan go env GOVERSION untuk mendapatkan versi go dan tetapkannya kepada pembolehubah Makefile:

version = $(shell go env GOVERSION)

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

Atas ialah kandungan terperinci Makefile arahan `pergi versi` dan `baca`. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam