Home > Software engineering >  In Makefiles, Is there a way to print the dollar sign ($) using @echo or $(info )?
In Makefiles, Is there a way to print the dollar sign ($) using @echo or $(info )?

Time:12-11

I have been trying to print the dollar sign ($) to stdout using @echo and $(info ) used in a Makefile without success.

I can use the echo command in a bash shell on the command line to print the $ sign without any issues. But the same bash commands do not work as expected when executed from within a Makefile.

noecho:
    $(info Print the dollar sign using info: $)
    @echo You only see this!  You DO NOT see the echo command printed above.
    @echo Remember echo is a shell command. 
    @echo You may need to escape special characters, like \\
    @echo 'Or put put text in single quotes! No need to escape special characters like \.'
    @echo 
    @echo "Enclosing characters in single quotes (') preserves the literal value of "
    @echo 'each character within the quotes. A single quote may not occur between '
    @echo 'single quotes, even when preceded by a backslash.'
    @echo
    @echo "Double quotes can also be used in most cases."
    @echo "Enclosing characters in double quotes (\") preserves the literal value of "
    @echo "all characters within the quotes, with the exception of $, \`, \\, and, "
    @echo "when history expansion is enabled, !"
    @echo 'Printing the $'

When I execute make noecho, I get:

rob$ make noecho
Print the dollar sign using info: 
You only see this! You DO NOT see the echo command printed above.
Remember echo is a shell command.
You may need to escape special characters, like \
Or put put text in single quotes! No need to escape special characters like \.

Enclosing characters in single quotes (') preserves the literal value of 
each character within the quotes. A single quote may not occur between 
single quotes, even when preceded by a backslash.

Double quotes can also be used in most cases.
Enclosing characters in double quotes (") preserves the literal value of 
all characters within the quotes, with the exception of  `, \, and, 
when history expansion is enabled, !
/opt/local/bin/bash: -c: line 1: unexpected EOF while looking for matching `''
/opt/local/bin/bash: -c: line 2: syntax error: unexpected end of file
make: *** [noecho] Error 2

I also tried @echo "'$'" and @echo "\$" without success.

Is there a way to print the dollar sign ($) using @echo or $(info ) in a Makefile?

CodePudding user response:

Double the dollar sign to stop make from interpreting it

echo $$
$(info $$)
  • Related