Rumah > pembangunan bahagian belakang > Golang > Bagaimana Saya Melarikan Diri Interpolasi Ungkapan dalam Makefiles untuk Melaksanakan Perintah dengan Betul?

Bagaimana Saya Melarikan Diri Interpolasi Ungkapan dalam Makefiles untuk Melaksanakan Perintah dengan Betul?

Barbara Streisand
Lepaskan: 2024-12-25 03:27:11
asal
550 orang telah melayarinya

How Do I Escape Expression Interpolation in Makefiles to Execute Commands Correctly?

Melepaskan Interpolasi Ungkapan dalam Makefiles

Apabila menulis Makefiles, adalah perkara biasa untuk ingin melaksanakan perintah yang menggabungkan ungkapan. Contoh biasa perkara ini ialah dalam ujian, di mana anda mungkin mahu menjalankan ujian secara selektif berdasarkan kriteria tertentu.

Andaikan anda sedang mengusahakan projek Go dan ingin mengecualikan ujian daripada direktori vendor. Anda boleh melakukannya dengan mudah dalam baris arahan menggunakan:

$ go test $(go list ./... | grep -v /vendor/)
Salin selepas log masuk

Walau bagaimanapun, apabila anda cuba memasukkan ini ke dalam Makefile:

test:
    go test $(go list ./... | grep -v /vendor/)

.PHONY: test
Salin selepas log masuk

Anda akan perasan bahawa ungkapan itu bukan diinterpolasi:

$ make
go test
?       github.com/m90/some-repo    [no test files]
Salin selepas log masuk

Untuk menyelesaikan isu ini, anda perlu melepaskan aksara "$" dalam ungkapan menggunakan satu saat "$":

test:
    go test $$(go list ./... | grep -v /vendor/)

.PHONY: test
Salin selepas log masuk

Dengan melarikan diri dari "$", anda mengarahkan Makefile untuk mentafsir ungkapan sebagai perintah literal untuk dilaksanakan, dan bukannya cuba menggantikan pembolehubah.

Atas ialah kandungan terperinci Bagaimana Saya Melarikan Diri Interpolasi Ungkapan dalam Makefiles untuk Melaksanakan Perintah dengan Betul?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan