无法让PowerShell读取*字符

时间:2017-02-16 05:06:24

标签: java powershell

我是Java编程的初学者,当我试图创建一个计算器时,我遇到了这个问题:powershell设法正确读取每个字符,除了星号,我试过用很多方法编写它:*,“*”,“*”但它仍然充当通配符而不是正确的星号。我该如何解决?

示例:如果我写

java Calculator 1 2 *

java Calculator 1 2 "\*"

java Calculator 1 2 '*'

这些都不起作用,它总是将星号作为通配符。

2 个答案:

答案 0 :(得分:1)

您的问题与 PowerShell 本身无关,因为它通过了* - 然而,它确实如此而没有引用 ,无论您使用*"*"还是'*'

因此,问题是:您的目标计划需要*引用什么样的内容才能将*视为文字< / em>而不是glob(通配符表达式)?

例如,如果您需要确保目标命令将*视为"*",则必须使用 literal (嵌入式)双引号:< /强>

java Calculate 1 2 `"*`"     # `" escapes a literal "

或使用带有嵌入式文字"实例的单引号:

java Calculate 1 2 '"*"'

请注意,由于Powershell不会将\识别为转义字符,因此使用\* as-is就足以传递 literal 字符序列{{1} } - 未加引号 - 到\*

可选背景信息:

PowerShell - 与类似POSIX的shell(在Unix世界中)不同 - 本身会自动扩展(不带引号)类似通配符的参数,例如java到匹配的文件名(它已启动)用于解释此类通配符的目标命令。)

因此,当您调用*等外部实用程序时,java等令牌通过传递。

但是,您是否使用*不引用,或者是否将其引用为*'*'在这种情况下没有任何区别,因为PowerShell在执行了之后解析,重建命令行,使用(双) - 仅在参数周围如果需要

令牌"*"需要 no 引用,因为它没有嵌入的空格,因此,当调用*时,命令的所有3种变体都会产生完全相同的命令行:类似于java

因此,保证外部实用程序将参数视为c:\path\to\java Calculator 1 2 *的唯一方法 - 例如,用于生成"字符。如上所示,参数的 literal 部分。

答案 1 :(得分:0)

您是否尝试过使用转义字符&#34; \ *&#34; ?

例如:

java Calculator 1 2 \*