如何在运行配置中将文字变量引用($ {foo})作为程序参数传递

sch*_*mmd 15 eclipse

在Eclipse中,当您在运行对话框中指定参数时,Eclipse会将其解释${foo}为使用Eclipse变量foo的请求.我想将一个字符串传递给我的应用程序包含${foo}但是Eclipse将其视为未定义的变量并给我一个错误.

 -Dfoo "bar" --pattern "regex magic ${foo}"
Run Code Online (Sandbox Code Playgroud)

Eclipse不接受单引号(')作为引用字符,而是成为输入的一部分.有没有人知道我如何${foo}在这个对话框中逃脱,所以它被解释为文本而不是变量引用?

Haa*_*kon 16

$ {foo}本身可以使用$"{foo}"进行转义.

当$ {foo}已经是双引号字符串的一部分时,就像在你的问题中一样,我不确定它是如何或是否可以被转义.


Mat*_*ell 11

我不认为在Eclipse中有任何方法可以做到这一点.

令人讨厌的代码是org.eclipse.core.internal.variables.StringSubstitutionEngine #replace.

这是代替$ {foo}的代码,用你定义的foo来代替.不幸的是,它可以处理嵌套和连接的变量,所以如果dollar ="$"和rest ="{foo}"那么$ {dollar} $ {rest}会给$ {foo}再次进行评估.

有关信息,在代码reportUndefinedVariables中硬编码为真正的堆栈,这就是你收到错误消息的原因.似乎没有任何改变它的方法.


小智 5

您必须在Eclipse中定义变量:name = dollar,value = $

(这可以在"运行配置"对话框中完成,当您键入参数时,单击"变量...",然后单击"编辑变量...",并添加该变量).

然后,在参数文本框中,键入$ {dollar}"{foo}"