我是Java编程的初学者,当我试图创建一个计算器时,我遇到了这个问题:powershell设法正确读取每个字符,除了星号,我试过用很多方法编写它:*,“*”,“*”但它仍然充当通配符而不是正确的星号。我该如何解决?
示例:如果我写
java Calculator 1 2 *
java Calculator 1 2 "\*"
java Calculator 1 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 \*