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

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

Barbara Streisand
リリース: 2024-12-25 03:27:11
オリジナル
579 人が閲覧しました

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート