Makefile arahan `pergi versi` dan `baca`

WBOY
Lepaskan: 2024-02-09 09:50:09
ke hadapan
985 orang telah melayarinya

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
Salin selepas log masuk

Tetapi ia tidak berfungsi dalam Makefile

check-golang-version:
    go version | read _ _ version _ && echo "A $$version Z"
Salin selepas log masuk

Hasil:

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

Akhirnya saya nak cek macam ni:

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

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
Salin selepas log masuk

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

Label berkaitan:
sumber:stackoverflow.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!