Home > Backend Development > Golang > How Can I Escape Dollar Sign Interpolation in Makefile Commands?

How Can I Escape Dollar Sign Interpolation in Makefile Commands?

Mary-Kate Olsen
Release: 2024-12-16 10:11:11
Original
1002 people have browsed it

How Can I Escape Dollar Sign Interpolation in Makefile Commands?

Escaping Expression Interpolation in a Makefile Command

Issue:

Encountering difficulties interpolating an expression within a command in a Makefile due to evaluation issues.

Explanation:

A Makefile uses different evaluation rules compared to a shell script. In a Makefile, the dollar sign ($) is used for variable expansion, but when used within a command, it may not be evaluated as intended.

Solution:

To escape the $ in a Makefile command and enable shell-like expression interpolation, use a second dollar sign ($$). This tells the Makefile to treat the first $ as literal text and defer interpolation to the shell.

Example:

To run tests in a Go project, but skip vendor tests, you can use the following Makefile snippet:

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

.PHONY: test
Copy after login

In this example, the $$(go list ./... | grep -v /vendor/) is enclosed within double dollars to ensure that the expression is interpolated by the shell.

By escaping the dollar sign, the Makefile correctly evaluates the expression and provides the expected output.

The above is the detailed content of How Can I Escape Dollar Sign Interpolation in Makefile Commands?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template