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
Barbara Streisandasal
2024-12-25 03:27:11546semak imbas

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

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

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

.PHONY: test

Anda akan perasan bahawa ungkapan itu bukan diinterpolasi:

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

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

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

.PHONY: test

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!

Kenyataan:
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