ホームページ >バックエンド開発 >Golang >コマンドを正しく実行するには、メイクファイル内の式補間を回避するにはどうすればよいですか?

コマンドを正しく実行するには、メイクファイル内の式補間を回避するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-25 03:27:11550ブラウズ

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

Makefile での式補間のエスケープ

Makefile を作成するとき、式を組み込んだコマンドを実行したいと思うのが一般的です。この一般的な例は、特定の基準に基づいてテストを選択的に実行するテストです。

Go プロジェクトに取り組んでいて、ベンダー ディレクトリからテストを除外したいとします。

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

を使用してコマンドラインでこれを簡単に行うことができます。しかし、これを Makefile に組み込もうとすると、

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

.PHONY: test

式がそうでないことに気づくでしょう。 interpolated:

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

この問題を解決するには、2 番目の文字を使用して式内の「$」文字をエスケープする必要があります。 "$":

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

.PHONY: test

"$" をエスケープすることで、変数を置換するのではなく、実行されるリテラル コマンドとして式を解釈するように Makefile に指示します。

以上がコマンドを正しく実行するには、メイクファイル内の式補間を回避するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。