在Eclipse中,当您在运行对话框中指定参数时,Eclipse会将${foo}
解释为使用Eclipse变量 foo 的请求。我想将一个字符串传递给包含${foo}
的应用程序,但Eclipse将其视为未定义的变量并给出错误。
-Dfoo "bar" --pattern "regex magic ${foo}"
Eclipse不接受单引号(')作为引用字符,而是成为输入的一部分。有没有人知道如何在这个对话框中转义${foo}
,因此它被解释为文本而不是变量引用?
答案 0 :(得分:15)
$ {foo}本身可以使用$“{foo}”转义。
当$ {foo}已经是双引号字符串的一部分时,就像在你的问题中一样,我不确定它是如何或是否可以被转义。
答案 1 :(得分:9)
我认为在Eclipse中没有办法做到这一点。
令人讨厌的代码是org.eclipse.core.internal.variables.StringSubstitutionEngine#substitute。
这是代替$ {foo}的代码,用你定义的foo代替。不幸的是,它可以处理嵌套和连接的变量,所以如果dollar =“$”和rest =“{foo}”那么$ {dollar} $ {rest}会给$ {foo}再次进行评估。
有关信息,在代码reportUndefinedVariables中硬编码为真正的堆栈,这就是你收到错误消息的原因。似乎没有任何改变它的方法。
答案 2 :(得分:6)
您必须在Eclipse中定义变量: name = dollar,value = $
(这可以在“运行配置”对话框中完成,当您键入参数时,单击“变量...”,然后单击“编辑变量...”,并添加该变量)。
然后,在参数文本框中键入 $ {美元} “FOO {}”