Search code examples
eclipsevariablesescaping

Eclipse program arguments, pass literal variable names


I am writing a program which expects command line arguments of the form

-foo ${foo}

However, ${name} is Eclipse’s notation for variables. Passing the above command line argument causes Eclipse to look for an internal variable named foo and inserting that instead of the ${foo} variable specification before running the program.

What is the proper way of escaping ${foo} so Eclipse will pass it literally, rather than trying to expand it?


Solution

  • TL;DR: $\{foo}

    The escape character for Eclipse is \; prepending this will cause Eclipse to pass the following character literally.

    Of a string resembling a variable specification, only the opening brace needs to be escaped in order to pass the whole thing literally.

    Escaping $ and } is not needed but will do no harm – $\{foo}, \$\{foo} and \$\{foo\} will all result in ${foo} being passed to the program.